Python 3.x 为什么while循环可以工作,而if语句不能返回我的值?
我是一名新的python程序员,我似乎无法理解为什么下面的代码使用while循环而不是if语句: 代码1Python 3.x 为什么while循环可以工作,而if语句不能返回我的值?,python-3.x,Python 3.x,我是一名新的python程序员,我似乎无法理解为什么下面的代码使用while循环而不是if语句: 代码1 def getAltitude(): altitude_prompt = int(input(("Enter the initial altitude(in meters): ")) if 1 > altitude_prompt or altitude_prompt > 9999: print("Altitude m
def getAltitude():
altitude_prompt = int(input(("Enter the initial altitude(in meters): "))
if 1 > altitude_prompt or altitude_prompt > 9999:
print("Altitude must be present between 1 and 9999, inclusive, please try again")
getAltitude()
return (altitude_prompt)
代码2
def getAltitude():
while True:
altitude_prompt = float(input("Enter the initial altitude(in meters): "))
if 1 > altitude_prompt or altitude_prompt > 9999:
print("Altitude must be present between 1 and 9999, inclusive, please try again")
else:
break
return(altitude_prompt)
正如您所看到的,这两个代码非常相似,除了在代码1中,如果我输入负数,提示将重新启动,但只保存负数。意思是如果我先输入-3,-3被保存。即使我用正数5来修正它,当函数重新编译时,函数仍然返回-3
然而,第二个代码可以完全正常工作。如果我输入一个负数,-3,它会重定向提示,直到我输入一个正数5,它会保存5,而不像代码1那样保存-3
我只是好奇为什么会这样。是因为我在函数内部调用函数吗?您应该返回递归调用的返回值:
def getAltitude():
altitude_prompt = int(input(("Enter the initial altitude(in meters): ")))
if 1 > altitude_prompt or altitude_prompt > 9999:
print("Altitude must be present between 1 and 9999, inclusive, please try again")
altitude_prompt = getAltitude()
return (altitude_prompt)
谢谢你的帮助!我该怎么做?哦,是的,我刚注意到。谢谢,但是你能解释一下为什么它是这样工作的吗?如果不将递归调用的返回值赋给变量,你只需丢弃它,让
altitude\u提示符
保留用户首先输入的原始值。