科拉兹序列。处理异常处理
Collatz sequence. Dealing with exception handling
我刚开始学习 python 3,在尝试理解异常处理时遇到了一些问题。我正在阅读一本教程书,它给了我一个名为 'The Collatz Sequence'
的小项目
它本质上是一个程序,通过使用一些简单的数学运算将任何整数计算为“1”。
我已经能够成功地让程序运行,直到用户输入除整数以外的任何内容。起初我遇到了 ValueError,它已通过使用 except ValueError:.
得到纠正
现在我似乎得到 NameError: name 'number' is not defined
感谢任何帮助。只是想了解异常处理。
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)
如果遇到异常,则必须在 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')
一种可能性是跟踪是否使用布尔值将整数作为输入给出。考虑下面的(改编的)代码:
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: '))
行的执行成功)。
我刚开始学习 python 3,在尝试理解异常处理时遇到了一些问题。我正在阅读一本教程书,它给了我一个名为 'The Collatz Sequence'
的小项目它本质上是一个程序,通过使用一些简单的数学运算将任何整数计算为“1”。
我已经能够成功地让程序运行,直到用户输入除整数以外的任何内容。起初我遇到了 ValueError,它已通过使用 except ValueError:.
得到纠正现在我似乎得到 NameError: name 'number' is not defined
感谢任何帮助。只是想了解异常处理。
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)
如果遇到异常,则必须在 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')
一种可能性是跟踪是否使用布尔值将整数作为输入给出。考虑下面的(改编的)代码:
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: '))
行的执行成功)。