如何常规检查 python 中的 ValueError?
How to conventionally check for ValueError in python?
我在 try
和 except
语句旁边使用了 while True:
循环来错误检查我为大学作业提交的程序。收到我的成绩后,我因使用 True
循环而被打分,因为它们显然 'forbidden' 并且在 Python 编程中效率低下。
Python 中的所有编程都是我在大学之前完成的,我使用下面的代码风格来捕获会导致我的程序崩溃的错误。在我被标记下来的特定代码中,我试图确保用户输入是整数,而不是浮点数或字符串。这是代码片段。
question = input('How old are you? ')
while True:
try:
question = int(question)
break
except ValueError:
question = input('Please enter an integer: ')
值得注意的是,我特别被打分了,因为我使用了这种包含 while True
的方法来检查整数输入。
这让我很奇怪;这样做的正确方法是什么?我的标记的反馈让我认为我所做的是一些原始的错误检查方法,但我从未遇到过更高级的方法。
如果有人知道 'the proper and correct way' 确保输入是整数,同时放弃使用 while True
,我将不胜感激!
在这个具体案例中,你可以放弃try-except
:
question = input('Please enter an integer.')
while not question.isdigit():
question = input(f'{question} is not an integer. Please enter an integer.')
question = int(question)
也就是说,我会说您的代码没有任何问题,与此解决方案相比,它实际上是这种情况的惯用方法。
此外,它确实与您的解决方案不同,因为它检查可以完全转换为整数的用户输入,而您的接受,例如,浮点数。
我在 try
和 except
语句旁边使用了 while True:
循环来错误检查我为大学作业提交的程序。收到我的成绩后,我因使用 True
循环而被打分,因为它们显然 'forbidden' 并且在 Python 编程中效率低下。
Python 中的所有编程都是我在大学之前完成的,我使用下面的代码风格来捕获会导致我的程序崩溃的错误。在我被标记下来的特定代码中,我试图确保用户输入是整数,而不是浮点数或字符串。这是代码片段。
question = input('How old are you? ')
while True:
try:
question = int(question)
break
except ValueError:
question = input('Please enter an integer: ')
值得注意的是,我特别被打分了,因为我使用了这种包含 while True
的方法来检查整数输入。
这让我很奇怪;这样做的正确方法是什么?我的标记的反馈让我认为我所做的是一些原始的错误检查方法,但我从未遇到过更高级的方法。
如果有人知道 'the proper and correct way' 确保输入是整数,同时放弃使用 while True
,我将不胜感激!
在这个具体案例中,你可以放弃try-except
:
question = input('Please enter an integer.')
while not question.isdigit():
question = input(f'{question} is not an integer. Please enter an integer.')
question = int(question)
也就是说,我会说您的代码没有任何问题,与此解决方案相比,它实际上是这种情况的惯用方法。
此外,它确实与您的解决方案不同,因为它检查可以完全转换为整数的用户输入,而您的接受,例如,浮点数。