我正在选择自己的冒险游戏,并且具有检查您在控制台中输入的内容是否可接受的功能。首先,如果您键入其他任何内容,则只能键入“打开灯”,否则它将作为错误返回,并提示您键入实际操作。我遇到的问题是在您输入不被接受的内容后,输入错误后您将无法继续。
actions = ['help','turn light on',]
def errorcheck(player_input):
if player_input in actions:
error = False
return()
else:
error = True
while error == True:
print('i dont know what you mean by',player_input)
player_input = input('>')
if player_input in actions:
error = False
else:
error = True
print('welcome to TITLE')
print('type help at anytime to see your options')
print('">" that symbol promts you to do something')
print('')
print('you wake up, its dark')
player_input = input('>')
errorcheck(player_input)
if error == False:
if player_input == ('help'):
playerhelp = True
while playerhelp == True:
print('you can: turn light on')
playerhelp = False
答案 0 :(得分:1)
errorcheck
可能会修改它接受作为参数的player_input
。它是一个新的局部变量,与全局player_input
没有任何关系。
天真的解决方案是将player_input
设置为全局变量,但是由于以下几个原因,这将是一个糟糕的反模式解决方案:
相反,让errorcheck
仅根据名称提示检查输入。
def errorcheck(player_input):
return player_input not in actions
player_input = None
while errorcheck(player_input):
player_input = input('>')
此时,将errorcheck
作为函数似乎有点多余。您真的不需要它:
player_input = None
while player_input not in actions:
player_input = input('>')
答案 1 :(得分:-1)
首先,绝对不要在主代码中使用函数中的局部变量。如果要访问error
,则应这样返回:
def errorcheck(player_input):
if player_input in actions:
error = False
else:
error = True
while error == True:
print('i dont know what you mean by',player_input)
player_input = input('>')
if player_input in actions:
error = False
else:
error = True
return error
第二,难怪您的程序在输入help
之后停止,因为之后没有更多代码了。如果希望不断要求用户输入内容,则必须在整个解析逻辑周围放一个循环...