我刚开始学习python 3,在尝试理解异常处理时遇到了一些问题。我正在阅读一本教程书,它给了我一个叫做“Collatz序列”的小项目。
它本质上是一个程序,它通过一些简单的数学计算任何整数到'1‘。
我已经能够成功地使程序工作,直到用户输入任何东西,除了一个整数。起初,我得到的是ValueError,它通过使用the :进行了更正。
现在我似乎得到了NameError:没有定义名称'number‘
任何帮助都是非常感谢的。只是想了解异常处理。
def collatz(number):
if number % 2 == 0:
even_number = number//2
print(even_number)
return even_number
elif number % 2 == 1:
odd_number = (number * 3 + 1)
print(odd_number)
return odd_number
try:
number = int(input('Enter Number: '))
except ValueError:
print('Please enter an integer')
while int(number) != 1:
number = collatz(number)发布于 2021-09-28 11:09:09
一种可能是使用布尔值跟踪整数是否作为输入。考虑以下(修改后的)代码:
def collatz(number):
if number % 2 == 0:
even_number = number//2
print(even_number)
return even_number
elif number % 2 == 1:
odd_number = (number * 3 + 1)
print(odd_number)
return odd_number
# Keep asking for input until the user inputs an integer
got_integer = False
while not got_integer:
try:
number = int(input('Enter Number: '))
got_integer = True
except ValueError:
print('Please enter an integer')
while int(number) != 1:
number = collatz(number)如您所见,我定义了一个布尔变量got_integer。最初,我将其值设置为False。在这个变量定义之后是一个while循环,它一直在执行循环体,直到got_integer的值是True为止。现在,您只需在一个完整的输入上将got_integer的值设置为True (即,如果行number = int(input('Enter Number: '))的执行成功)。
发布于 2021-09-28 11:08:01
如果遇到异常,则必须在try块中包含逻辑。然后当你面对异常时你就可以处理它了。在您的情况下,您可以在下面的try中使用while块。根据异常情况,您可以在下面处理它们,就像您已经做的那样。
def collatz(number):
if number % 2 == 0:
even_number = number//2
print(even_number)
return even_number
elif number % 2 == 1:
odd_number = (number * 3 + 1)
print(odd_number)
return odd_number
try:
number = int(input('Enter Number: '))
if number != 1:
number = collatz(number)
except ValueError:
print('Please enter an integer')https://stackoverflow.com/questions/69360463
复制相似问题