Python程序和绘制正方形

时间:2013-02-26 01:51:41

标签: python turtle-graphics logo-lang

我的节目

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 个答案:

答案 0 :(得分: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()

这应该足以让图形屏幕弹出。

祝你好运,玩得开心。

答案 1 :(得分:3)

while i == input():(即使删除引号后)也没有为i分配值。它将input()的结果与i进行比较,这可能不是您想要的。

答案 2 :(得分: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()