2013-08-20 2 views
2

python 2.7에서 100000에서 999999999 사이의 난수를 생성 한 다음 사용자 전자 메일로 보내주는 프로그램을 만들려고합니다. 지금까지는 난수를 생성 한 다음 사용자 전자 메일로 보냅니다. 그러나 사용자가 코드를 입력하면 항상 잘못된 내용이 인쇄됩니다. 이 문제를 어떻게 해결할 수 있습니까?Python 2.7 임의 코드

code = random.randrange(100000, 99999999) 

    entry = getpass.getpass('Code: ') 
    if entry == code: 
     print 'Welcome!' 
    else: 
     print 'Incorrect!' 
+1

는'int'을 entry''되어 있습니까? 어쩌면'entry = str (getpass.getpass ('Code :'))? –

+1

이메일로 보내면 사용자가 어떻게 입력해야합니까? – mata

+0

이메일로 전송하는 코드는 어디에 있습니까? 그것은'code ='라인과'entry ='라인 사이에 있습니다, 맞습니까? –

답변

5

int 객체 (random.randrange에 의해 생성 됨)와 str 객체 (getpass.getpass가 반환 함)를 비교합니다. 항복 항상 거짓.

>>> 1 == '1' 
False 

code을 str.

>>> str(1) == '1' 
True 

또는 entry을 int로 변환 할 수 있습니다. 그런 다음 항목에 숫자 만 포함되어 있는지 확인하거나 ValueError를 catch해야합니다.

+0

답변에 이름을 올리면 +1! –

+1

정말 고마워요. 난 random.randrange 문자열을 출력 것이라고 추측했을거야. – user2700766

+0

@ user2700766, 내 대답이 도움이 되었다면 [대답의 수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). – falsetru

2

4 == '4'False 인 것과 같은 이유 때문입니다. 비슷한 데이터 유형을 비교해야합니다.

if int(entry) == code 

또는

if entry == str(code) 

은 (또한, 그것은, randrange의하지 randomrange)

+0

고마워. 그리고 나는 항상 우연히 그것을 지적하기 위해 randomrange를 타이프한다. – user2700766