没有类型,不知道如何摆脱它
问题描述:
我遇到了一些编码问题,我正在为一个学校任务做同样的事情发生,我设法修复它,但我没有这样做知道我是如何做到的。没有类型,不知道如何摆脱它
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")
这是导致问题的代码。如果我输入一个无效的号码,它可以正常工作,我可以重新输入一个新的号码,但正如你所看到的,我打算打印出“玩的人数”,但它返回“没有人玩”,但是这个只是在我输入了一个无效的数字之后。我能做什么?
答
在理想的情况下,没有任何错误,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
。
当你输入一个无效数字时,你想要它做什么? – Hamms
'number = number()'是一个坏主意,这意味着你将无法在这之后使用'number'函数。 – cdarke
不,我想让这个def一个变量,以便以后可以调用它。 –