【发布时间】:2019-07-08 01:10:38
【问题描述】:
在我尝试创建的程序中,我正在使用 Turtle 创建一个 12 小时数字闹钟,其中每个数字 (hh:mm) 都会发生变化,就好像时钟经过 24 小时制一样。但是,我用来设置分钟数和位时针的一些变量的值并没有改变,即使我已经将它们设置为在满足某些条件后将它们相加。
所以基本上,我已经设置了海龟来绘制一张桌子,以及那张桌子上的时钟的主体和表面。但更重要的是,我制作了 6 个海龟,一个用于小时数和分钟数之间的点,一个用于上午/下午,一个用于每个数字。它们都是由我上面描述的每个海龟的单独函数绘制的。我有一个单独的 .txt 文档,其中 5 位行,对应于每个数字手需要更改的点。使用 AM/PM 和十位小时数功能,我设置了一个基本的 if 和 else 语句,如果与该特定功能对应的位为 0,则十位应为 0,或者如果该位出现为 1,它将出现为 1。但是,对于其余的数字,如果该位出现为 0,则相应的函数将重复它所做的最后一次绘制,这将保存在自己的功能。如果该位显示为 1,它将被保存在一个变量中,然后该变量将用于与另一个变量进行模运算,该变量将产生一个与循环或旋转的下一个数字相对应的数字。例如,对于一个位的分针,可以出现的数字是 0、1、2、3、4、5、6、7、8 和 9。如果模运算结果是 3,那么数字将是 3。同样,3 将被保存在一个变量中,这样,当该位为 0 时,函数可以显示之前的数字。另外,如果模运算结果为 0,那么我在模函数中描述的第二个变量每次都会加上一个特定的数字。在一个位置分针的情况下,该数字是 10。仅此而已。我的代码如下:
#Program Setup
import turtle
import time
num = turtle.Turtle()
num2 = turtle.Turtle()
num3 = turtle.Turtle()
num4 = turtle.Turtle()
text = turtle.Turtle()
binlist = []
com = 12
com1 = 6
com2 = 10
bits = 0
bits1 = 0
bits2 = 0
#Function Setup
def hour1(bit1,g):
if int(bit1) == 0:
num.clear()
g = num.write("0",False,"center",("alarm clock",100,"normal"))
else:
num.clear()
g = num.write("1",False,"center",("alarm clock",100,"normal"))
def hour2(bit2,g1,bits,com):
if int(bit2) == 0:
num2.clear()
g1
else:
bits +=1
return bits
if int(bits) % int(com) == 1:
num2.clear()
g1 = num2.write("1",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 2:
num2.clear()
g1 = num2.write("2",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 3:
num2.clear()
g1 = num2.write("3",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 4:
num2.clear()
g1 = num2.write("4",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 5:
num2.clear()
g1 = num2.write("5",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 6:
num2.clear()
g1 = num2.write("6",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 7:
num2.clear()
g1 = num2.write("7",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 8:
num2.clear()
g1 = num2.write("8",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 9:
num2.clear()
g1 = num2.write("9",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 10:
num2.clear()
g1 = num2.write("0",False,"center",("alarm clock",100,"normal"))
elif int(bits) % int(com) == 11:
num2.clear()
g1 = num2.write("1",False,"center",("alarm clock",100,"normal"))
else:
num2.clear()
g1 = num2.write("2",False,"center",("alarm clock",100,"normal"))
com += 12
return com
def min1(bit3,g2,bits1,com1):
if int(bit3) == 0:
num3.clear()
g2
else:
bits1 += 1
return bits1
if int(bits1) % int(com1) == 1:
num3.clear()
g2 = num3.write("1",False,"center",("alarm clock",100,"normal"))
elif int(bits1) % int(com1) == 2:
num3.clear()
g2 = num3.write("2",False,"center",("alarm clock",100,"normal"))
elif int(bits1) % int(com1) == 3:
num3.clear()
g2 = num3.write("3",False,"center",("alarm clock",100,"normal"))
elif int(bits1) % int(com1) == 4:
num3.clear()
g2 = num3.write("4",False,"center",("alarm clock",100,"normal"))
elif int(bits1) % int(com1) == 5:
num3.clear()
g2 = num3.write("5",False,"center",("alarm clock",100,"normal"))
else:
num3.clear()
g2 = num3.write("0",False,"center",("alarm clock",100,"normal"))
com1 += 6
return com1
def min2(bit4,g3,bits2,com2):
if int(bit4) == 0:
g3
else:
bits2 += 1
return bits2
if int(bits2) % int(com2) == 1:
num4.clear()
g3 = num4.write("1",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 2:
num4.clear()
g3 = num4.write("2",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 3:
num4.clear()
g3 = num4.write("3",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 4:
num4.clear()
g3 = num4.write("4",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 5:
num4.clear()
g3 = num4.write("5",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 6:
num4.clear()
g3 = num4.write("6",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 7:
num4.clear()
g3 = num4.write("7",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 8:
num4.clear()
g3 = num4.write("8",False,"center",("alarm clock",100,"normal"))
elif int(bits2) % int(com2) == 9:
num4.clear()
g3 = num4.write("9",False,"center",("alarm clock",100,"normal"))
else:
num4.clear()
g3 = num4.write("0",False,"center",("alarm clock",100,"normal"))
com2 += 10
return com2
def meridiem(bit5,g4):
if int(bit5) == 0:
text.clear()
g4 = text.write("AM",False,"center",("alarm clock",25,"normal"))
else:
text.clear()
g4 = text.write("AM",False,"center",("alarm clock",25,"normal"))
f = open("ikeokereke.txt","r")
for line in f:
binlist.append(line.rstrip('\n'))
for e in binlist:
bit1 = e[0:1]
bit2 = e[1:2]
bit3 = e[2:3]
bit4 = e[3:4]
bit5 = e[4:5]
time.sleep(.5)
hour1(bit1,g)
hour2(bit2,g1,bits,com)
min1(bit3,g2,bits1,com1)
min2(bit4,g3,bits2,com2)
meridiem(bit5,g4)
print(bits)
print(bits1)
print(bits2)
print(com)
print(com1)
print(com2)
预期结果:正常、正常工作的数字闹钟 实际结果:十位时针显示为0,一位分针显示为0,另外两个数字根本没有出现。
ikeokereke.txt
【问题讨论】:
-
将您的 ikeokereke.txt 文件的内容添加到问题中,以便我们运行代码进行调试。
标签: python function variables turtle-graphics