나는 파이썬 3.3에서 1 ~ 100의 숫자로 몬스터와 보물을 개별적으로 생성하는 기본적인 게임을 만들기로 결심했다. 번호를 선택하십시오. 프로그램은 사용자에게 그들이 너무 가깝거나 너무 높거나 뭔가를 치 었는지 알려줍니다.프로그램은 함수로 가려고했지만 대신 try 및 except 루프를 따른다.
NameError를 제외하고 try 루프를 만들었습니다 (Mac의 경우 Windows 용 ValueError 임). 난 아무것도을하기 전에, 내가 당신과 내가 지금까지 가지고있는 코드를 공유하고 싶습니다 :
import time, random
def generateValues():
global treasurePos, monsterPos
while treasurePos != monsterPos:
treasurePos = random.randint(1, 100)
monsterPos = random.randint(1, 100)
print(treasurePos)
print(monsterPos)
def mainmenu():
time.sleep(0.5)
print("welcome to this game, press 1 to play or 2 to quit")
time.sleep(0.5)
try:
option = int(input("What would you like to do: "))
if option == (1):
time.sleep(0.5)
generateValues()
elif option == (2):
quit()
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
mainmenu()
내가 1을 입력하는 경우를, 내 원래 계획은 계속 보물과의 positons를 생성하는 게임이었다 괴물. 프로그램이 무엇을 대신 루프는이에 돌아 : 더 '단 1 개 또는 2 개의 입력하세요'의 무한 루프를 생성
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
- 나는 내 질문은 1
를 입력 할 경우에도 따라서,이 루프를 멈추고 프로그램이 'generateValues'함수로 계속 진행할 수 있도록 간단하고 복잡한 명령이 있습니까?
귀하가 공유하고자하는 도움이나 통찰력에 감사드립니다. 사전에
감사합니다, 레오
편집 1 :
카렌 클라크 내 while 루프를 지적하고 나는 어떤 작품 아래에 대한 대체 솔루션 코딩 한 :
def generateValues():
global treasurePos, monsterPos
treasurePos = 0
monsterPos = 0
treasurePos = random.randint(1, 3)
monsterPos = random.randint(1, 5)
if treasurePos == monsterPos:
generateValues()
else:
print(treasurePos)
print(monsterPos)
while 루프는 혼란 스럽습니다. 값을 영원히 생성하려고하는 이유가 있습니까? 분명히 각각에 대한 하나의 무작위 값이 작동합니다. –
@Karen Clark while 루프에 대한 나의 목적은 두 개의 서로 다른 값이 될 때까지 값을 생성하는 것이 었습니다. 두 위치 모두에 대해 동일한 값이 생성되면 프로그램은 다른 숫자를 다시 생성합니다. –
나는 그것을 지금 바꿨다. 원래의 포스트의 바닥을 보라. –