Python - 检查空输入+脚本问题

时间:2015-09-16 00:10:21

标签: python integer try-catch except

我对Python非常了解,正如预期的那样,我经常在编写脚本时遇到问题而且通常不确定如何修复它们。

我正在制作一款小游戏,您可以尝试猜测该程序随机选择的数字。我已经走得很远了,但我注意到当我什么都没输入时,程序只显示一条错误信息。我希望程序显示文本“输入一个数字”。在这种情况下,然后再次提示“你的猜测:”输入,但经过大量的研究,我真的不知道如何在我的代码中成功实现该功能。我的问题,特别是“尝试和除外”部分 - 我真的不知道如何正确地编写它们,但我在这里看到另一个帖子建议使用它们。

import random

def question():
    print("Guess a number between 1 and 100.")
    randomNumber = random.randint(1, 100)
    found = False

    while not found:
        myNumber = int(input("Your guess: "), 10)
        try:
            myNumber = int(input("Your guess: "), 10)
        except ValueError:
            print("Enter a number.")

        if myNumber == randomNumber:
            print("Correct!")
            found = True
        elif myNumber > randomNumber:
            print("Wrong, guess lower!")
        else:
            print("Wrong, guess higher!")

question()

你应该能够在我写的代码中看到我的意图,谢谢。

4 个答案:

答案 0 :(得分:1)

你几乎是对的。处理异常后继续下一次迭代。

import random

def question():
    print("Guess a number between 1 and 100.")
    randomNumber = random.randint(1, 100)
    found = False

    while not found:
        try: 
            myNumber = int(input("Your guess: "), 10)
        except Exception:
            print('Enter a number.')
            continue

        if myNumber == randomNumber:
            print("Correct!")
            found = True
        elif myNumber > randomNumber:
            print("Wrong, guess lower!")
        else:
            print("Wrong, guess higher!")

question()

答案 1 :(得分:0)

您可以编写如下函数:

def input_num(input_string):
    """ This function collects user input

    Args:
        input_string: message for user

    Return:
        user_input: returns user_input if it is a digit
    """

    user_input = raw_input("{}: ".format(input_string))
    if not user_input.isdigit():
        input_num(input_string)
    return int(user_input)

然后调用此函数

user_num = input_num("Enter a number")

它会一直要求用户提供有效的输入,直到用户输入一个

答案 2 :(得分:0)

我很困惑你为什么要求输入两次。您只需要询问他们输入一次。之后,您需要在except语句中添加一个continue。否则,它不会重复,只是结束程序。这就是你修改的while循环应该是什么样的。

while not found:
    try:
        myNumber = int(input("Your guess: "), 10)
    except ValueError:
        print("Enter a number.")
        continue

    if myNumber == randomNumber:
        print("Correct!")
        found = True
    elif myNumber > randomNumber:
        print("Wrong, guess lower!")
    else:
        print("Wrong, guess higher!")

答案 3 :(得分:0)

只需使用continue中的except关键字继续循环播放。

except ValueError: print('Enter a number') continue