没有类型,不知道如何摆脱它

问题描述:

我遇到了一些编码问题,我正在为一个学校任务做同样的事情发生,我设法修复它,但我没有这样做知道我是如何做到的。没有类型,不知道如何摆脱它

def number(): 
    num = input("please enter the number of people that would like play:") 
    try: 
     if int(num) >= 2: 
      if int(num) <=7: 
       return num 
      else: 
       print("number must be 7 or less") 
       number() 
     else: 
      print("number must be greater than 2") 
      number() 
    except: 
     print("that is not a valid number. number must be between 2 and 7") 
     number() 
number = number() 
print(number,"people are playing") 

这是导致问题的代码。如果我输入一个无效的号码,它可以正常工作,我可以重新输入一个新的号码,但正如你所看到的,我打算打印出“玩的人数”,但它返回“没有人玩”,但是这个只是在我输入了一个无效的数字之后。我能做什么?

+0

当你输入一个无效数字时,你想要它做什么? – Hamms

+2

'number = number()'是一个坏主意,这意味着你将无法在这之后使用'number'函数。 – cdarke

+0

不,我想让这个def一个变量,以便以后可以调用它。 –

在理想的情况下,没有任何错误,number()返回输入的num,一切都很好。但是,在所有其他情况下,您可以通过递归调用number()来结束函数,而不实际返回任何内容。所以这个函数隐含地返回None(即没有)。

只需将每个递归调用更改为return number(),它应该可以工作。

Btw。你应该避免这种递归;请参阅this answer关于如何最好地向用户反复询问有效的输入。

+0

谢谢你的工作 –

你需要使用一个循环,而不是再次调用你的例程,它不会有你正在寻找的效果(查看递归)。像下面的办法东西会更好:

def number(): 
    while True: 
     num = input("please enter the number of people that would like play: ") 

     try: 
      num = int(num) 

      if num > 7: 
       print("number must be 7 or less") 
      elif num <= 2: 
       print("number must be greater than 2") 
      else: 
       return num 
     except: 
      print("that is not a valid number. number must be between 2 and 7") 

number = number() 
print(number, "people are playing") 

你看到None的原因是,它是有可能达到你的函数的底部没有return被使用。在这种情况下,Python将返回值默认为None