Python:raw_input第一次请求输入,然后两次请求输入

时间:2015-01-28 16:43:02

标签: python python-idle

我在电脑上遇到了这段旧代码:

# -*- 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

2 个答案:

答案 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被调用两次。