Кто-нибудь знает, почему я получаю «Процесс завершен с кодом выхода 0»? - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь запустить эту программу, но по какой-то причине, когда я вхожу в 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

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

в python 0 равно «ложь».Поэтому, когда вы вводите «0», userGuess становится ложным, и цикл 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
0 голосов
/ 03 февраля 2019

0 является ложным, то есть в булевом выражении оно оценивается как False.Поэтому цикл while, начинающийся с

while userGuess:

, будет пропущен, если userGuess равно 0.Не похоже, что вам нужно проверять какие-либо условия в цикле, поэтому достаточно изменить значение на

while True:

.Кстати, Process finished with exit code 0 означает, что программа завершилась без ошибок.

...