나는 새로운 파이썬 코더이며 아래 코드가 while 루프에서 작동하지만 if 문이 아닌 이유를 이해할 수없는 것 같습니다.
CODE1
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를 입력 할 때까지 코드 1과 같이 -3이 아닌 5를 저장합니다.
왜 이런 일이 발생하는지 궁금합니다. 함수 내부에서 함수를 호출하기 때문입니까?
대신 재귀 호출의 반환 값을 반환해야합니다.
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)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다