2016-03-31 8 views
-4
import random 

print "Welcome to the number guesser program. We will pick a number between 1 and 100 and then ask you to pick a number between 1 and 100. If your number is 10 integers away from the number, you win!" 

rand_num = random.randint(1, 100) 


user_input = raw_input('Put in your guess:').isdigit() 
number = int(user_input) 

print number 

if abs(rand_num - number) <= 10: 
    print "Winner" 
else: 
    print "Loser" 

このコードを実行しようとするたびに、コンピュータは常に番号1を生成します。そして、10(またはそれ以下)の整数を1から離して置くと、それでもelse文が表示されます。私は自分の苦境を解決できる人に感謝します。私はあなたの答えをシンプルにしておいてください。誰も私のためにこのコードを理解できますか?

答えて

1

raw_input入力として入力した文字列を返します。 isdigit()は、文字列が数字かどうかをチェックし、TrueまたはFalseを返します。

はあなたのコードでは、それで、あなたは TrueFalseのいずれかを取得 isdigit user_inputへの戻り値を 代入しています。次に、数値に変換して、1または0のいずれかを取得します。これはあなたが望むものではありません。

user_inputは、raw_inputという結果になります。次に、それがuser_input.isdigit()で有効な番号であるかどうかをチェックします。数値でない場合は、エラーメッセージを表示して終了するか、入力を再要求し、そうでない場合はuser_inputを整数に変換してください。 isdigitの

user_input = raw_input('Put in your guess:').isdigit().

戻り値()TrueまたはFalseである:

+0

IMHO、 'try:int(raw_input(" ... ")); 'エラーメッセージ'以外は 'if-else'よりも良いでしょう。 – Lafexlos

+1

@Lafexlos、合意しました。 OPは「isdigit」を使いたいと思っていますが、問題があるので、どのように作業するかを示しました。 – ForceBru

+0

ああ、それは本当です。みたいに、私は全体のポイントを逃した。 – Lafexlos

0

問題は、このsentencによる製品です。 1または任意の数字を入力するとTrue(True = 1、False = 0)が返されるので、数字を入力すると常に1が得られます。機能raw_inputはあなたにユーザーの入力を与えるが、その後、あなたはisdigitの結果を得るあなたの変数user_inputisdigit、結果としてを呼び出す user_input = raw_input('Put in your guess:').isdigit()

:この行で


    import random 

    print "Welcome to the number guesser program. 
    We will pick a number between  
    1 and 100 and then ask you to pick a number 
    between 1 and 100. If your number is 10 integers 
    away from the number, you win!" 

    rand_num = random.randint(1, 100) 

    user_input= raw_input('Put in your guess:') 
    is_digit = user_input.isdigit() 
    if is_digit==True: 
     number = int(user_input) 
     print number 
     if abs(rand_num - number) <= 10: 
      print "Winner" 
     else: 
      print "Loser" 
    else: 
     print 'Your input is not a digit.' 
0

ルック:あなたはこのように変更することができます。したがって、ブール値を持ちます。

number = int(user_input)で、整数型にキャストします。 Pythonではtrueは1、falseは0です。それであなたは常に1を取得します。

関連する問題