|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 可乐与酱油 于 2018-12-10 14:33 编辑
鱼c论坛的各位大佬好,我是一名大一新生,在电子设计课讲七段数码管显示的启发下,我参照书上代码结合我自己的学习编了一段程序
程序如下:
- #七段数码管绘制
- import turtle
- import time
- def preset():
- turtle.pensize(5) #预设
- turtle.hideturtle()
- turtle.speed(100)
- turtle.pu()
- turtle.fd(-300)
- def drawLine(): #划一笔
- turtle.pu()
- turtle.fd(10)
- turtle.pendown()
- turtle.fd(30)
- turtle.pu()
- turtle.fd(10)
- turtle.pd()
- def drawNone(): #不画
- turtle.pu()
- turtle.fd(50)
- turtle.pd()
- def drawNum(): #画一个数字(按照画的顺序编号)
- drawLine() if a else drawNone()
- turtle.right(90)
- drawLine() if b else drawNone()
- turtle.right(90)
- drawLine() if c else drawNone()
- turtle.right(90)
- drawLine() if d else drawNone()
- drawLine() if e else drawNone()
- turtle.right(90)
- drawLine() if f else drawNone()
- turtle.right(90)
- drawLine() if g else drawNone()
- def skip(): #画完一个数字后前进一小点
- turtle.right(90)
- turtle.pu()
- turtle.fd(10)
- turtle.pd()
- def gang(): #划一杠
- turtle.right(90)
- turtle.pu()
- turtle.fd(5)
- turtle.pd()
- turtle.fd(5)
- turtle.pu()
- turtle.fd(5)
- turtle.pd()
-
- def judge(num): #真值赋予七个字母
- a = 1 if num in (2,3,4,5,6,8,9) else 0
- b = 1 if num in (0,1,3,4,5,6,7,8,9) else 0
- c = 1 if num in (0,2,3,5,6,8,9) else 0
- d = 1 if num in (0,2,6,8) else 0
- e = 1 if num in (0,4,5,6,8,9) else 0
- f = 1 if num in (0,2,3,5,6,7,8,9) else 0
- g = 1 if num in (0,1,2,3,4,7,8,9) else 0
- def main():
- preset() #预设
- num1=time.strftime('%H-%M-%S') #获取当前时间
- for each in num1:
- if each == '-': #如果不是数字
- gang()
- else: #如果是数字
- each=eval(each)
- judge(each)
- drawNum()
- skip()
- turtle.reset()
- while 1:
- main()
复制代码
然后运行结果
- Traceback (most recent call last):
- File "C:\Users\wzl\Desktop\不知道出了啥bug的时间绘制程序.py", line 74, in <module>
- main()
- File "C:\Users\wzl\Desktop\不知道出了啥bug的时间绘制程序.py", line 70, in main
- drawNum()
- File "C:\Users\wzl\Desktop\不知道出了啥bug的时间绘制程序.py", line 23, in drawNum
- drawLine() if a else drawNone()
- NameError: name 'a' is not defined
复制代码
我试了一下,可能是
没有给七个字母赋上值,但我怎么也想不通。
我还尝试了下如果这么写
- a = 1 if num in (2,3,4,5,6,8,9) else 0
复制代码
就可以给a赋上值
可能是封装函数用错了,但就是找不到问题所在。
这究竟是什么原因???
你需要global
a在judge里被赋值了,然而在judge外侧并没有用
|
|