验证 Python 中的用户输入时出错

Error while validating User Input in Python

我在验证用户输入时遇到问题(我在询问用户是否希望继续使用计算阶乘的程序)。代码如下:(用户输入验证接近主函数的末尾,我没有包含阶乘函数)

def main():

    valid_inp = False
    usr_continue = True

    while usr_continue:

        while valid_inp == False:
            usr_inp = int(input('Please ENTER a number: '))

            if usr_inp < 0:
                print('ERROR, INVALID INPUT')

            else:
                valid_inp = True
                continue
        result = factorial(usr_inp)

        print(str(result) + '\n')

        con_inp = str(input('Would you like to continue ? '))

        if con_inp == 'Y' or con_inp == 'y':
            usr_continue

        elif con_inp == 'N' or con_inp == 'n':
            print('Goodbye...')
            break


main()

制作一个仅 returns 有效输入的函数。使用异常处理程序处理错误的整数输入,然后验证整数是您想要的范围:

from math import factorial

def get_nonnegative_integer(prompt):
    while True:
        try:
            val = int(input(prompt)) # bad input for int such as "abc" will raise ValueError
            if val >= 0:             # good input will be range-checked
                return val
            else:
                print('enter a number >= 0')
        except ValueError:
            print('invalid input for integer')
        
def main():
    while True:
        usr_inp = get_nonnegative_integer('Please enter a number: ')
        result = factorial(usr_inp)
        print(result)
        con_inp = input('Would you like to continue(Y/n)? ').upper() # default Yes
        if con_inp.startswith('N'):
            print('Goodbye...')
            break

main()