我知道这是一个简单的修复 - 但我不能为我的生活弄清楚如何解决这个IndexError。
def show_status():
print("\nThis is the " + rooms[current_room]["name"])
rooms = {
1 : { "name" : "Highway" ,
"west" : 2 ,
"east" : 2 ,
"north": 2 ,
"south": 2} ,
2 : { "name" : "Forest" ,
"west" : 1 ,
"east" : 1 ,
"north": 1 ,
"south": 1} ,
}
current_room = 1
while True:
show_status()
move = input(">> ").lower().split()
if move[0] == "go":
if move[1] in rooms[current_room]:
current_room = rooms[current_room][move[1]]
else:
print("you can't go that way!")
else:
print("You didn't type anything!")
如果用户在没有输入值的情况下按下“返回”,则游戏会因“列表索引超出范围”而崩溃。我不明白为什么“else”没有在while循环中捕获它。
答案 0 :(得分:1)
move[0]
检查列表的第一个成员,如果IndexError
为空,则会抛出move
,就像用户只需按Enter一样。您可以先检查move
是否为真:如果不是,and
运算符将绕过下一次检查。
您似乎期望用户输入一个空格,导致两个成员。您应该检查len(move) == 2
以确保这一点。
修改如下:
# ...
move = input(">> ").lower().split()
if len(move) == 2 and move[0] == "go":
# the rest