我在电脑上遇到了这段旧代码:
# -*- coding: utf-8 -*-
player_pos = 2
def game():
global player_pos
background = [2, 1, 2, 1, 2]
screen = [0] * 5
for i in range(5):
screen[i] = background[i]
screen[player_pos] = 7
print screen
if raw_input("> ") == 'a':
player_pos -= 1
elif raw_input("> ") == 'd':
player_pos += 1
while True:
game()
我从IDLE运行它,提示按预期工作。但是,如果按'a'或'd',它可能正常工作或只打印一个空白行,然后再次按'd'即可正常工作。 所以你需要按“a”或“d”一次或两次,我希望它总是一次。
我发现了这个问题,但我不知道如何将其翻译成我的问题。 Simple:Python asks for input twice
答案 0 :(得分:3)
您正在调用raw_input
方法两次 - 在每个if
语句中调用一次。
您可以将用户输入存储在本地var中,然后对其进行测试:
user_answer = raw_input("> ")
if user_answer == 'a':
player_pos -= 1
elif user_answer == 'd':
player_pos += 1
答案 1 :(得分:0)
一步一步地运行:
raw_input
,读取用户的输入。a
进行比较。a
,则再次调用raw_input
,则会读取用户的输入。d
进行比较。如您所见,要输入d,您必须先输入a,因为raw_input
被调用两次。