我在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()
答案 0 :(得分:1)
您遇到了浮点精度问题。不应该对数字进行数学运算,而应该更好地使用它的字符串表示。
for digit in str(number):
...