让用户使用乌龟绘制任何数字

时间:2014-05-30 13:05:58

标签: python turtle-graphics

我在python中创建一个脚本,该脚本应该允许用户输入任何数字,并且它将在屏幕上绘制。现在,我赢得的代码并没有画出数字,只打印0.99999 ...我没有收到错误信息,所以我不确定我应该编辑什么才能得到这个东西工作。帮助将不胜感激。

number = int(input("Pick a number"))
print (number) #Number is definitley a number

moveto(-500,0)
for i in range(1,len(str(number))+1):
    digit = ((number % (10 ** i) - (number % 10 ** i - 1)) / 10 ** i - 1)
    print(digit)
    drawnum(digit)

这是我从中导入的图书馆。

from turtle import *

def moveto(x,y):
    pu()
    goto(x,y)
    pd()
    setheading(0)

#x and y let the user place their numbers down, d is length of sides.
def nine(d):
    point = pos()
    fd(d)
    rt(90)
    fd(d*2)
    bk(d)
    rt(90)
    fd(d)
    rt(90)
    fd(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def eight(d):
    point = pos()
    fd(d)
    rt(90)
    fd(d*2)
    for i in range(3):
        rt(90)
        fd(d)
    bk(d)
    lt(90)
    fd(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def seven(d):
    point = pos()
    fd(d)
    rt(90)
    fd(d*2)
    bk(d*2)
    lt(90)
    bk(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def six(d):
    point = pos()
    fd(d)
    bk(d)
    rt(90)
    fd(d*2)
    for i in range(3):
        lt(90)
        fd(d)
    rt(90)
    fd(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def five(d):
    point = pos()
    fd(d)
    bk(d)
    rt(90)
    fd(d)
    lt(90)
    fd(d)
    for i in range(2):
        rt(90)
        fd(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def four(d):
    point = pos()
    rt(90)
    fd(d)
    for i in range(2):
        lt(90)
        fd(d)
    bk(d * 2)
    pu()
    goto(point)
    pd()
    setheading(0)

def three(d):
    point = pos()
    for i in range(2):
        fd(d)
        rt(90)
    fd(d)
    for i in range(2):
        bk(d)
        rt(90)
    bk(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def two(d):
    point = pos()
    fd(d)
    rt(90)
    fd(d)
    lt(90)
    for i in range(2):
        bk(d)
        lt(90)
    bk(d)
    pu()
    goto(point)
    pd()
    setheading(0)

def one(d):
    point = pos()
    pu()
    fd(d)
    pd()
    rt(90)
    fd(d*2)
    pu()
    goto(point)
    pd()
    setheading(0)

def zero(d):
    point = pos()
    fd(d)
    rt(90)
    fd(d*2)
    rt(90)
    fd(d)
    rt(90)
    fd(d*2)
    pu()
    goto(point)
    pd()
    setheading(0)

def drawnum(n):
    d=100
    if (n == 1):
        one(d)
    if (n ==2):
        two(d)
    if (n==3):
        three(d)
    if (n==4):
       four(d)
    if (n==5):
        five(d)
    if (n==6):
        six(d)
    if (n==7):
        seven(d)
    if (n==8):
        eight(d)
    if (n==9):
        nine(d)
    if (n==0):
        zero(d)
    pu()
    fd(1.5*d)
    pd()

1 个答案:

答案 0 :(得分:1)

您遇到了浮点精度问题。不应该对数字进行数学运算,而应该更好地使用它的字符串表示。

for digit in str(number):
 ...