Python程序与绘制正方形
我的程序
import turtle
i = "input()"
while i == "input()":
if i == "exit":
input()
if i == "fd":
turtle.fd(1)
if i == "bk":
turtle.bk(1)
if i == "lt":
turtle.lt(90)
if i == "rt":
turtle.rt(90)
if i == "pu":
turtle.pu()
if i == "pd":
turtle.pd()
现在我输入的文件内容是 (fd,fd,fd,bk,bk,lt,rt 等等), 它应该画一个正方形,但什么都没有显示出来。 我哪里做错了呢?
3 个回答
正如其他人所说的,你需要去掉函数周围的引号,而不是每一个引号:
import turtle
while True:
i = input()
if i == "exit":
break # stops the loop
if i == "fd":
turtle.fd(1)
if i == "bk":
turtle.bk(1)
if i == "lt":
turtle.lt(90)
if i == "rt":
turtle.rt(90)
if i == "pu":
turtle.pu()
if i == "pd":
turtle.pd()
你遇到NameError
错误是因为如果你把"fd"
的引号去掉,你就得到了一个变量fd
,而不是一个字符串。不过,这个变量fd
还没有被定义,所以就出现了错误。
不过,如果你使用的是Python 2.x(而不是3.x),你应该使用raw_input()
(这个会返回一个字符串):
import turtle
while True:
i = raw_input()
if i == "exit":
break
if i == "fd":
turtle.fd(1)
if i == "bk":
turtle.bk(1)
if i == "lt":
turtle.lt(90)
if i == "rt":
turtle.rt(90)
if i == "pu":
turtle.pu()
if i == "pd":
turtle.pd()
这一行 while i == input():
(即使去掉引号)并不是在给 i
赋值。它是在把 input()
的结果和 i
进行比较,这可能不是你想要的效果。
在Python中,有一个可以调用的函数,叫做input()
。但是你并没有真正调用它。你把它放在了引号里,这样你只是引用了一个字符串,这个字符串里面包含了字母'i'、'n'、'p'、'u'、't'、'('和')'。
把引号去掉,这样你就能真正调用input()
这个函数了。
补充说明:根据你下面的评论,看来你在使用Python 2.x;所以你应该用raw_input()
。raw_input()
会直接返回用户输入的字符串,而input()
会尝试把它当作一个值来计算。
x = input() # if user types "2", x is set to the number 2
x = raw_input() # if user types "2", x is set to the string "2"
补充说明:你需要确保画笔是放下的,可能还想让海龟在前进或后退时走得多一点,而不是只走1步,并且需要让屏幕显示出来。
我建议你先看看Python中海龟图形的基础介绍。
http://www.blog.pythonlibrary.org/2012/08/06/python-using-turtles-for-drawing/
在while循环开始之前,试着加上这个:
screen = turtle.getscreen()
这样应该就足够让图形界面弹出来了。
祝你好运,玩得开心。