Python程序与绘制正方形

0 投票
3 回答
4871 浏览
提问于 2025-04-17 17:07

我的程序

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 个回答

1

正如其他人所说的,你需要去掉函数周围的引号,而不是每一个引号:

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()
3

这一行 while i == input():(即使去掉引号)并不是在给 i 赋值。它是在把 input() 的结果和 i 进行比较,这可能不是你想要的效果。

3

在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()

这样应该就足够让图形界面弹出来了。

祝你好运,玩得开心。

撰写回答