如何根据Python 3中的输入让乌龟移动?

时间:2017-10-18 00:23:50

标签: python turtle-graphics

我正在编写一个程序,需要在控制台中输入以控制乌龟在屏幕上的位置。例如,如果程序的用户在控制台中键入w并按下回车,则乌龟应向前移动30个单位。如果用户键入a,则乌龟应该向左转45度等等。

我编写了一些函数,并为程序使用了无限while循环。它看起来像这样:

def movemattfd():
    matt.fd(30)

def movemattlt():
    matt.lt(45)

def movemattrt():
    matt.rt(45)

def movemattbk():
    matt.back(30)

def movematt():
    while True:
        input()
        if input() == 'w':
            movemattfd()

        if input() == 'a':
            movemattlt()

        if input() == 'd':
            movemattrt()

        if input() == 's':
            movemattbk()

def main():
    windowHeight = 500
    windowWidth = 500
    turtle.screensize(windowWidth, windowHeight, None)
    movematt()

main()

该程序有效,除非我在控制台中输入w,至少需要2个条目才能让我的乌龟前进。当我试图将乌龟变为正确时,它需要更多。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

每个input()都会提示用户输入新条目。

对于每组5个条目,您的代码所做的是:

  • 丢弃第一个条目
  • 检查第二个条目是'w'然后前进
  • 检查第三个条目是'a'然后向左移动
  • 检查第四个条目是's'然后向右移动
  • 检查第五个条目是'd',然后再返回

您应该将第一个input()分配给变量,然后进行检查。
如果已满足其他字符,请使用elif以避免检查其他字符。

while True:
    entry = input()
    if entry == 'w':
        movemattfd()

    elif entry == 'a':
        movemattlt()

    elif entry == 'd':
        movemattrt()

    elif entry == 's':
        movemattbk()