0

このプログラムを実行しようとしていますが、何らかの理由で、0 を入力するたびにプログラムの実行が停止します。入力が生成された乱数よりも小さいため、「推測が低すぎます。もう一度やり直してください」と予想します。誰でも助けて説明できますか?また、コードを改善できるように、気軽にコードを批評してください。とても有難い。

# Generate random number for player to guess.
import random

number = random.randint(1, 3)
print(number)

# Ask player's name and have player guess the number.
welcomeUser = input("Hi, welcome to 'Guess a Number!'. Please tell us your name ")

userName = str(welcomeUser)
userGuess = int((input("Guess a number from 1 - 3 ")))

# Cycle through player's guesses until player enters correct number.
while userGuess:
    if userGuess > number:
        print("You've guess too high, please try again ")
        userGuess = int(input("Guess a number from 1 - 3 "))
        if userGuess == number:
            print("Congratulations! You've guessed correctly! ")
            break
    elif userGuess < number or userGuess == 0:
        print("You've guessed too low, please try again ")
        userGuess = int(input("Guess a number from 1 - 3 "))
        if userGuess == number:
            print("Congratulations! You've guessed correctly! ")
            break
    else:
        print("Congratulations " + userName + "! " + "You've guessed correctly! ")
        break
4

2 に答える 2

3

0つまりFalse、ブール式で評価されます。したがって、でwhile始まるループ

while userGuess:

の場合userGuessはスキップされます0。ループ内の条件を確認する必要がないように見えるので、それを次のように変更します

while True:

十分なはずです。ところで、Process finished with exit code 0プログラムがエラーなしで終了したことを意味します。

于 2019-02-03T00:16:19.570 に答える
1

Python 0 では、「false」に相当します。したがって、「0」を入力すると、userGuess が false になり、while ループが終了します。新しい変数を導入することをお勧めします:

continueProgram = True
while continueProgram :
    if userGuess > number:
        print("You've guess too high, please try again ")
        userGuess = int(input("Guess a number from 1 - 3 "))
        if userGuess == number:
            print("Congratulations! You've guessed correctly! ")
            continueProgram = False
    elif userGuess < number or userGuess == 0:
        print("You've guessed too low, please try again ")
        userGuess = int(input("Guess a number from 1 - 3 "))
        if userGuess == number:
            print("Congratulations! You've guessed correctly! ")
            continueProgram = False
    else:
        print("Congratulations " + userName + "! " + "You've guessed correctly! ")
        continueProgram = False
于 2019-02-03T00:20:07.473 に答える