【问题标题】:Set IF statment to check for specific characters, breaks while loop when using any character instead设置 IF 语句以检查特定字符,在使用任何字符时中断 while 循环
【发布时间】:2020-08-28 14:28:09
【问题描述】:

我是 python 新手。我正在猜测随机数游戏,当同时使用 int 和 str 作为输入时遇到问题,我希望用户在按下 Q 或 q 时退出程序,同时游戏也检查数字。经过数小时的谷歌搜索和重写,这是我想出的:

#! Python3
import random
upper = 10
number = random.randint(1, upper)
print(number)  #TODO: THIS LINE FOR TESTING ONLY
print("Guess a number between 1 and {}. Press Q to quit!".format(upper))
total_guesses = 0
guess = 0
while guess != number:
    total_guesses += 1
    guess = input()
    if guess.isalpha():
        if guess == "q" or "Q":
            break
        elif guess != "q" or "Q":
            print("Please type in a valid guess.")
            guess = 0
    if guess.isnumeric():
        guess = int(guess)
        if guess == number:
            print("Good job! You guessed the number in {} tries!.".format(total_guesses))
            break
        if guess < number:
            print("Guess Higher!")
        if guess > number:
            print("Guess lower!")
    else:
        print("Valid inputs only")
        guess = 0

此代码几乎可以按预期工作;我现在遇到的问题是,在第 13 行和第 14 行,每次键入任何字母时循环都会中断,即使我将 if 语句设置为仅检查 Q 或 q,我也不明白为什么这样做。任何帮助表示赞赏!

【问题讨论】:

    标签: python-3.x if-statement while-loop


    【解决方案1】:
    if guess == 'q' or "Q":
    

    python读取这一行的方式是——

    if guess == "q":
    

    还有——

    if "Q":
    

    “Q”是一个字符,表示它是真实的。如果“Q”返回真。试试:

    if guess == "q" or guess == "Q":
    

    如果您觉得这太多了,其他选项包括 -

    if guess in ["Q", "q"]:
    
    if guess.upper() == "Q":
    

    【讨论】:

    • 我完全忘记了“真实”方面!太感谢了!第一个解决方案有效,我还必须在第 14 行编辑“guess = 0”并替换为“继续”以重新启动检查过程。该代码现在工作正常。 tyvm!
    猜你喜欢
    • 2021-06-13
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多