유효한 입력이 입력 될 때까지 계속 반복하기 위해 while 루프로 메뉴를 만들려고했습니다. 이것은 내가 가진 코드입니다.
print("1) Play game")
print("")
print("2) Instructions")
print("")
print("3) Quit")
print("")
while True:
try:
menu = int(input("Make a selection: "))
except ValueError:
print("Sorry, your input was not valid")
continue
if menu > 3 or menu < 1:
print("Please use a number in the range 1-3")
continue
else:
break
if menu == 1:
print("Lets go!")
elif menu == 2:
print("Lets go!")
else:
print("Quitting...")
"if menu> 3 또는 menu <1 :"라고 표시된 "if"는 다음과 같은 오류를 표시합니다.
"연결할 수없는 codepylint (연결할 수 없음)"
제발 도와 주시면 감사하겠습니다.
문제 1 : 계속 문
코드 이해를 돕기 위해 순서도를 사용하여 선을 그렸습니다.
그러나 except 문 내에서 continue를 이동하면 코드는 성공적인 try 문에서 if 문으로 전달됩니다.
문제는 코드가 결코로 진행되지 않도록한다 if menu > 3....
문은 항상로 이동 try
하거나 except
을 수행 한 후와 continue
. 따라서 루프 자체가 if menu > 3 ....
문을 건너 뜁니다 . 즉, 실행되지 않으므로 루프에서 벗어날 수 없습니다 break
.
문제 2 : continue 문을 제거했다고 말했습니다.
문에서 continue를 제거하면 새로운 문제가 발생합니다. 코드가 except 절에 들어가면 변수 메뉴가 제대로 생성되지 않습니다. 따라서로 이동 if menu > 3 ...
하면 변수가 정의되지 않았고 (except 절로 인해) 새로운 오류가 발생합니다.
해결책:
continue
문을 except
절 내부 로 옮기는 것이 좋습니다 . 그것은 문제를 해결할 것입니다. 메뉴 입력에 오류가 있으면 while 문으로 돌아갑니다. 성공 if menu > 3 ...
하면 제대로 실행됩니다.
수정 된 올바른 코드는 다음과 같습니다.
while True:
try:
menu = int(input("Make a selection: "))
except ValueError:
print("Sorry, your input was not valid")
continue #move this inside except
if menu > 3 or menu < 1:
print("Please use a number in the range 1-3")
continue
else:
break
if menu == 1:
print("Lets go!")
elif menu == 2:
print("Lets go!")
else:
print("Quitting...")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다