如何让乌龟根据 Python 3 中的输入移动?
How do I get turtle to move based on input in Python 3?
我正在编写一个程序,需要在控制台中输入以控制乌龟在屏幕上的位置。例如,如果程序的用户在控制台中键入 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 次才能让我的乌龟向前移动。当我试图让我的乌龟右转时,它甚至需要更多。
有什么想法吗?提前致谢。
每个 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()
我正在编写一个程序,需要在控制台中输入以控制乌龟在屏幕上的位置。例如,如果程序的用户在控制台中键入 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 次才能让我的乌龟向前移动。当我试图让我的乌龟右转时,它甚至需要更多。
有什么想法吗?提前致谢。
每个 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()