关于python collatz序列问题

关于python collatz序列问题两个问题
第一个是那个全局变量为什么必须使用?我把全局变量和后面那个A=number取消了以后就没用了,(对于这块儿特别模糊求清楚解答)
第二,下面哪行except只能用一次,就是输入一次以后只会出现后面那个print,我想让它输错了以后还可以无限重新输入直到输入正确为止,要怎么做

1、如果不是全局变量,在while A>1:的循环位置,就不能反复计算到1。你的number就是用来再次循环计算的。

2、可以使用try-except语句。如果输入的字符串是整数,那么它可以转换为int类并退出循环,否则会出现ValueError,可以使用try-except语句捕获ValueError,然后继续请求输入。

def c(n):
   global A
   if n % 2 == 0:
       n = n // 2
       print(str(n))
   elif n % 2 == 1:
       n = 3 * n + 1
       print(str(n))
   A = n

while True:
   try:
       A = int(input("请输入一个大于1的整数:"))
       while A>1:
           c(A)
       break

   except ValueError:
       print("格式不正确,请重新输入。")

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-14
这个是这样的,你先通过用户输入得到了一个数A,然后把A作为函数的传入参数,经过运算后,你的函数把运算出来的数的值又赋值给了A,这样A就变成了下一个数,然后再把新A接着进行运算,一直循环。
第二个问题的话你在try外面加个while 1就行了本回答被网友采纳