Niong 发表于 2018-5-17 09:36:25

求助一个函数的问题!!!!!

写的一个函数,代码如下:
def collatz():
    print('请输入一个正整数:')

    try :
      number=int(input())
    except :
      print ("你必须输入正整数!!!")

         
    while True:
      if number ==1:   
            print('Collatz序列结束')   
            break

      elif number%2==0:
            number=number//2
            print(number)

      else:
            number=3*number+1
            print(number)
                           
collatz()

问题:当输入0或者负数的时候,函数就无限循环,怎么限制输入的数是大于0的?

BngThea 发表于 2018-5-17 09:40:32

把try...except改成
while True:
    tmp = input()
    if tmp.isdigit() and int(tmp)>0:
      number = int(tmp)
      break
    else:
      print('您的输入有误,请重新输入:',end="")

Niong 发表于 2018-5-17 09:45:57

本帖最后由 Niong 于 2018-5-17 09:49 编辑

BngThea 发表于 2018-5-17 09:40
把try...except改成

可以,但是要求是使用try...except,还是谢谢你了,大佬!{:5_109:}

冬雪雪冬 发表于 2018-5-17 09:50:44

用try的程序:
def collatz():
    number = -1
    while number <= 0:
      print('请输入一个正整数:')

      try :
          number=int(input())
          if number <= 0:
            raise ValueError
      except ValueError:
          print ("你必须输入正整数!!!")

         
    while True:
      if number ==1:   
            print('Collatz序列结束')   
            break

      elif number%2==0:
            number=number//2
            print(number)

      else:
            number=3*number+1
            print(number)
                           
collatz()

Niong 发表于 2018-5-17 09:55:09

冬雪雪冬 发表于 2018-5-17 09:50
用try的程序:

好的,学到了,谢谢大佬!{:5_109:}
页: [1]
查看完整版本: 求助一个函数的问题!!!!!