这个函数在选择一个整数后不会停止,它会在无限循环中继续这样做。任何人都可以告诉我为什么,或者我该如何修复这个问题?
def wGen():
top = len(Repo.words)
randInt = random.randint(0,len(Repo.words))
print randInt, top
它产生这个输出:(1037是数据库中元素的数量)
...
214 1037
731 1037
46 1037
490 1037
447 1037
103 1037
342 1037
547 1037
565 1037
90 1037
...
你去我用这个'菜单相似的功能'来调用这个功能
def gameMenu():
"""Game Menu"""
gameMenuPrint()
def m():
inp = raw_input('enter option: ')
while inp != 'q':
if inp == 'play' or inp =='1': GameC.wGen()
elif inp == 'help' or inp =='2': pass
elif inp == 'back' or inp =='0': mainMenu()
else:
print 'wrong input!'
inp = raw_input('enter valid a option!: ')
m()
答案 0 :(得分:4)
这部分是问题所在:
def m():
inp = raw_input('enter option: ')
while inp != 'q':
if inp == 'play' or inp =='1': GameC.wGen()
elif inp == 'help' or inp =='2': pass
elif inp == 'back' or inp =='0': mainMenu()
else:
print 'wrong input!'
inp = raw_input('enter valid a option!: ')
在进入循环之前,您要求raw_input
。进入循环后,您再也不会要求输入。将其更改为:
def m():
inp = raw_input('enter option: ')
while inp != 'q':
if inp == 'play' or inp =='1': GameC.wGen()
elif inp == 'help' or inp =='2': pass
elif inp == 'back' or inp =='0': mainMenu()
else:
print 'wrong input!'
inp = raw_input('enter option: ')
虽然我其实更喜欢这个:
def m():
while True:
inp = raw_input('enter option: ')
if inp == 'q': break
elif inp == 'play' or inp =='1': GameC.wGen()
elif inp == 'help' or inp =='2': pass
elif inp == 'back' or inp =='0': mainMenu()
else:
print 'wrong input!'
答案 1 :(得分:0)
while条件总是为真,除非它们在第一个raw_input中输入'q'。你永远不会获得inp的新值。在while循环中添加另一个raw_input。