在我正在尝试创建的程序中,我使用Turtle创建了一个12小时数字闹钟,其中每个数字(hh:mm)都会发生变化,就像时钟是在24小时内运行一样。然而,我用来设置分钟数和一个人的位置时针的一些变量的值没有变化,即使我已经将它们设置为在满足特定条件时将它们相加。
所以基本上,我已经设置了乌龟来画一张桌子,在桌子上画时钟的身体和表面。但更重要的是,我做了6个乌龟,一个是小时数和分钟数之间的点,一个是AM/PM点,一个是每个数字。它们都是由我上面描述的每个海龟的单独函数绘制的。我有一个单独的.txt文档,其中行为5位,对应于每个数字需要更改的点。使用AM/PM和10的位小时数函数,我设置了一个基本的if和else语句,其中,如果与该特定函数对应的位为0,则10的位应为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)预期结果:正常工作的数字闹钟实际结果:10的位置时针显示为0,1的位置分针显示为0,其他两个数字甚至根本不显示。
ikeokereke.txt
发布于 2019-02-15 01:44:43
即使是这一小段代码也有很多问题:
def hour2(bit2,g1,bits,com):
if int(bit2) == 0:
num2.clear()
g1
else:
bits +=1
return bits
if int(bits) % int(com) == 1:
...具体地说:
g1从来没有在任何地方定义过,所以调用hour2(bit2,g1,bits,com)不能工作。g1有没有任何可能的值,将g1单独放在一行中作为code?bits的一部分,然后返回它是没有意义的,因为没有任何东西查看hour2()调用的返回值,如果bits是作为全局变量的话。这是行不通的,因为在function.global语句,在return bits语句之后的大约30行代码永远不会被执行,因为您已经离开了function.bits和com已经是整数了,所以一次又一次地调用int()似乎表明您对自己的设计缺乏理解。https://stackoverflow.com/questions/54683104
复制相似问题