あなたが最初に聞きたいことは、あなたprint tries
が何を得ているのかということです。事実上、常に 1 を取得していることがわかります。
なぜなら、あなたはインクリメントしなかったからです。ユーザーが推測し続けるため、追加しませんでした。
tries = tries + 1
一般に、推測ごとに書くことができます。
tries = 1
while number != secretNumber:
if number > secretNumber:
print("Too high!")
tries = tries + 1 # here is the addition
number = input("Your guess: ")
number = int(number)
if number < secretNumber:
print("Too low!")
tries = tries + 1 # here is the addition
number = input("Your guess: ")
number = int(number)
while number == secretNumber:
print("You got it in",tries,"tries")
break
このコードにはまだ問題があります。2 番目のループは意味がありません。ループはループのように聞こえます。条件が満たされるか、誰か(あなた)が中断して終了するように指示するまで、実行を続けます。
ユーザーが番号を見つけた場合、それwhile number !- secretNumber
は正しくなりFalse
ますか? 最初のループを終了します。したがって、2 番目のループをスキップして、ユーザーを祝福することができます。
もう1つの小さなことは、二重if
ステートメントです。
if
ステートメントは高価です。コンピューターは、正しく推測するためにテストする必要があります。ただし、いずれにしても、複数の条件を実行する別の方法があります。
if condition1 met:
do this
elif condition2 met:
do this
elif condition3 met:
do this
elif more....
else: # optional, but encourage, this is a default fallback case
do this
number > secretNumber
である場合、理論的True
にテストする必要はありません。number < secretNumber
適応させることで、コードをよりクリーンで論理的に健全なものにしますif .. elif .. else
import random
secretNumber = random.randint(1,100)
secretNumber = int(secretNumber)
print("Guess a number between 1 and 100!")
number = input("Your guess: ")
number = int(number)
tries = 1
while number != secretNumber:
if number > secretNumber:
print("Too high!")
tries = tries + 1 # here is the addition
number = input("Your guess: ")
number = int(number)
elif number < secretNumber:
print("Too low!")
tries = tries + 1 # here is the addition
number = input("Your guess: ")
number = int(number)
print("You got it in",tries,"tries")
# another way to print is
# print("You got it in %s tries" % tries)
# print("You got it in {t} tries".format(t=tries))
初心者の方は、print
コードのデバッグに役立ててください。