While循环用户输入问题

2024-03-29 06:35:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个学校练习,我必须写一个程序,当用户输入一个整数时,输出“奇数”或“偶数”。一直循环,直到用户按Q停止程序。到目前为止我有这个

while(True):
    num= int(input("Enter a number"))
    mod= num % 2
    if (mod > 0):
            print("This is an odd number")
    elif (mod == 0):
            print("This is an even number")
    else:
            print("Bye")
            exit()

但是,由于Q不是整数,它给了我一个ValueError。我该怎么做这个练习?谢谢


Tags: 用户程序anmodtruenumberis整数
2条回答

我通常在做任何事情之前使用user_input = input()。在

固定版本:

while True:
    user_input = input("Enter a number")

    if user_input == "Q":
        print("Bye")
        exit()

    num = int(user_input)
    mod = num % 2
    if (mod > 0):
        print("This is an odd number")
    elif (mod == 0):
        print("This is an even number")

int函数引发了ValueError,我们可以用try-except子句捕捉到它:

while(True):
    inp = input("Enter a number"))if inp == 'Q':
            print("Bye")
    else:try:
            num = int(inp)
        except ValueError:
            print('Invalid input')
            continue;
        mod= num % 2
        if (mod > 0):
            print("This is an odd number")
        elif (mod == 0):
            print("This is an even number")

然而,代码并不是真正的“Pythonic”。例如,您编写mod > 0,但由于这里只有两种可能性是0和{},因此我们知道在这种情况下它是1。我们不必检查1,我们可以检查其真实性。在

另一个方面是^{中的mod == 0。因为我们知道如果mod > 0,那么它意味着mod == 0,所以我们可以使用else。通常人们不会在ifs和whiles中写括号(除非更改被检查表达式的语义)。所以我们可以使用:

^{pr2}$

相关问题 更多 >