Q) 编写一个名为 collatz() 的函数,它有一个名为 number 的参数。如果一个数字是偶数,那么 collatz() 应该打印数字 // 2 并返回这个值。如果一个数字是奇数,那么 collatz() 应该打印并返回 3 * number + 1。 然后编写一个程序,让用户输入一个整数,并不断调用该数字上的 collatz() 直到函数返回值 1。
这是我为上述问题编写的代码,但我需要有关如何使用 while 循环的一些帮助,因此当我收到 ValueError 而不是中断程序时,我希望程序重新执行程序而不是仅仅显示除了中的打印语句。
try:
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
print(3 * number + 1)
return 3 * number + 1
x = int(input("Enter a number: "))
while x != 1:
x = collatz(x)
except ValueError:
print("Please enter a numerical value")
您可以修改HandlingExceptions - Python Wiki 中的代码:
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
print(3 * number + 1)
return 3 * number + 1
has_input_int_number = False
while has_input_int_number == False:
try: # try to convert user input into a int number
x = int(input("Enter a number: "))
has_input_int_number = True # will only reach this line if the user inputted a int
while x != 1:
x = collatz(x)
except ValueError: # if it gives a ValueError
print("Error: Please enter a numerical int value.")
示例用法:
Enter a number: a
Error: Please enter a numerical int value.
Enter a number: 1.5
Error: Please enter a numerical int value.
Enter a number: 5
16
8
4
2
1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句