2017-11-18 8 views
0

基本的に、乱数を生成するコードを作り、入力を入れてその数字を試してみるようにしたかったのです。私はそれがうまくいくと思ったが、正しい数字を推測しても毎回elseステートメントを実行するだけだ。シンプルなゲームでは、乱数ジェネレータをロックとして使うのに助けが必要です。

import random 
def main(): 
    values = [1, 2, 3, 5, 7, 10] 
    a = random.choice(values) 
    print (a) ##########To see what the number is######### 
    b = input('Enter a number: ') 
    if b == a: 
    print('You have guessed the number!') 
    else: 
    print('Try again') 
    main() 
main() 

答えて

0

if条件は整数で文字列をチェックしています。入力番号bint(b)を使用してintに変換してから、確認するか、確認してください。

import random 
def main(): 
    values = [1, 2, 3, 5, 7, 10] 
    a = random.choice(values) 
    print (a) ##########To see what the number is######### 
    b = input('Enter a number: ') 
    if int(b) == a: 
     print('You have guessed the number!') 
    else: 
     print('Try again') 
     main() 
main() 

の詳細を知るためには、あなたは、関数の内部@nfnneilからの提案どおり、他の条件内であることをmain()のインデントを更新しました

print(type(a)) 
print(type(b)) 

<class 'int'> 
<class 'str'> 

abの種類を印刷することができます。

+1

')(メイン'ラインではないので、私はこの落とし穴なしでそれを書き直し適切にインデントされ、ちょうどフレンドリーなヘッドアップ。 – Neil

0

あなたがPython 3を使用していると仮定すると、問題は文字列を数値と比較しているため、常にfalseです。ただ、変更:

b = input('Enter a number: ') 

た:

b = int(input('Enter a number: ')) 

その後bは(限り、ユーザーは番号を入力すると)数になります。

0

カップルのもの。 1つは、inputの結果をintに変換しないことです。したがって、'7'は、int()関数を使用して変換しないかぎり、プログラミングの仕方によって決して7に等しくなりません。 2つ目は、この問題を解決するために再帰を使用していることに気付きました。残念ながら、あなたの実装では、数字を再定義して推測するようです。私はこれがあなたの "ロック推測ゲーム"の意図だとは想像できません。あなたは再帰を使用する必要がある場合

import random 

values = [1, 2, 3, 5, 7, 10] 
number = random.choice(values) 
print("The secret number is {}".format(number)) 
while True: 
    guess = int(input('Enter a number: ')) 
    if guess == number: 
     print('You have guessed the number!') 
     break 
    else: 
     print('Try again') 

:あなたは再帰を必要としない場合は

は:

import random 
def main(a=None): 
    if a == None: 
     values = [1, 2, 3, 5, 7, 10] 
     a = random.choice(values) 
     print (a) ##########To see what the number is######### 
    b = int(input('Enter a number: ')) 
    if b == a: 
     print('You have guessed the number!') 
    else: 
     print('Try again') 
     main(a) 
main() 
関連する問題