让用户使用海龟画任意数字
我正在用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 个回答
1
你遇到了浮点数精度的问题。与其对数字进行数学运算,不如使用它的字符串表示形式来处理。
for digit in str(number):
...