Python While循环用户输入问题

Python While循环用户输入问题,python,python-3.x,Python,Python 3.x,我有一个学校练习,当用户输入一个整数时,我必须编写一个输出“奇数”或“偶数”的程序。继续循环,直到用户按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 a

我有一个学校练习,当用户输入一个整数时,我必须编写一个输出“奇数”或“偶数”的程序。继续循环,直到用户按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。我应该怎样做这个练习?谢谢

int
函数引发了
ValueError
,我们可以通过
try
-
捕获它,除了
子句:

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")

正是
int
函数引发了
ValueError
,我们可以通过
try
-
捕获它,除了
子句:

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")

我通常先使用
user\u 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")

我通常先使用
user\u 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。首先检查值是否为
'Q'
。不要将其强制转换为int。首先检查值是否为
'Q'
。这不会仅针对
Q
,它将针对任何非int退出。我想:您经常在代码中使用粗体,我从未见过其他人这样做(至少不经常),人们喜欢这样吗?是否值得一篇元帖子?一个
else
子句而不是
exit()
更具可读性。@Chris\u Rands:人们是否喜欢它完全无关。在写这样的文章时,它会将太多的腺嘌呤三聚体转化为腺嘌呤二聚体。我知道Prolog程序员经常使用它,而且因为Prolog是我所知道的最简单的语言,我认为这就足够了。谢谢,我还没有熟悉例外情况,但我现在将进一步研究它们:)这不会只针对
Q
,它将退出任何非整数。想:你经常在你的代码中使用粗体,我从来没有见过其他人这样做(至少不经常),人们喜欢这样吗?是否值得一篇元帖子?一个
else
子句而不是
exit()
更具可读性。@Chris\u Rands:人们是否喜欢它完全无关。在写这样的文章时,它会将太多的腺嘌呤三聚体转化为腺嘌呤二聚体。我知道Prolog程序员经常使用它,而且由于Prolog是我所知道的最简单的语言,我认为这就足够了。谢谢,我还没有熟悉例外情况,但我现在将进一步研究它们:)好的,非常感谢。我倾向于不使用input=input(),所以我真的应该开始这样做:)好的,非常感谢。我倾向于不使用input=input(),所以我真的应该开始这样做:)