【问题标题】:Anyone know why I'm getting a "Process finished with exit code 0"?任何人都知道为什么我得到一个“进程以退出代码 0 完成”吗?
【发布时间】:2019-02-03 00:09:56
【问题描述】:

我正在尝试运行这个程序,但由于某种原因,每当我输入 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

【问题讨论】:

  • 在循环条件等布尔上下文中,0 的计算结果为 False,因此您的代码永远不会进入循环。

标签: python truthiness


【解决方案1】:

0 是错误的,即它在布尔表达式中计算为 False。因此,while 循环以

开头
while userGuess:

如果userGuess0,将被跳过。看起来您不需要检查循环中的任何条件,因此将其更改为

while True:

应该足够了。顺便说一句,Process finished with exit code 0 只是表示程序没有任何错误退出。

【讨论】:

  • 太棒了!我刚刚进行了更改,它正在工作。那么while语句中的任何0输入都会使其为False,从而退出程序?
  • @Mir 差不多。例如,执行print(bool(0))。它是False,所以你的循环会变成while False:,它显然永远不会执行。
【解决方案2】:

在 python 0 中等于“假”。因此,当您输入“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

【讨论】:

  • 太棒了!谢谢!
  • 你不能分配给continue,Python中的一个关键字。
  • oops :) 是的,只需重命名变量
  • @AlinaJ 另外,在 Python 中,trueTruefalseFalse。另外,一个快速提示,您可以使用左下角的edit 按钮编辑您的答案以使其更好!
  • 您的缩进看起来有些奇怪。可以查一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 2018-01-30
  • 2017-04-22
  • 2020-10-11
相关资源
最近更新 更多