Python数字转换命令演示幻灯片.pyw


用Python制作的幻灯片类型的作品,用来教Python几个常用的数据类型命令,如 int, float , bool, type, str , list, tuple. 以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites --upgrade

  1 """
  2    第八课 数据转换
  3 """
  4 from sprites import *
  5 
  6 s = '第八课 数据转换'
  7 screen = Screen()
  8 screen.bgcolor('blue')
  9 screen.titlebar(False)
 10 root = screen._root              # 窗口对象
 11 root.wm_attributes('-alpha',0.7) # 设置窗口为全透明(0到1.0)
 12 screen.setup(800,700)
 13 screen.tracer(0,0)
 14 
 15 # 下面的代码让窗口可以拖动.
 16 oldx = 0
 17 oldy = 0
 18 def startmove(event):
 19     global oldx,oldy
 20     oldx = event.x
 21     oldy = event.y
 22 def stopmove(event):
 23     global oldx,oldy
 24     oldx = 0
 25     oldy = 0        
 26 def movewindow(event):
 27     global oldx,oldy     
 28     dx = event.x - oldx
 29     dy = event.y - oldy
 30     root.move(dx,dy)
 31 screen.cv.bind("<ButtonPress-2>", startmove)
 32 screen.cv.bind("<ButtonRelease-2>", stopmove)
 33 screen.cv.bind("<B2-Motion>",movewindow)
 34 
 35 # 下面的代码按方向箭头则窗口能上下左右移动
 36 screen.onkeypress(lambda:root.move(10),'Right')
 37 screen.onkeypress(lambda:root.move(-10),'Left')
 38 screen.onkeypress(lambda:root.move(0,-10),'Up')
 39 screen.onkeypress(lambda:root.move(0,10),'Down')
 40 screen.listen()
 41 
 42 ft = ('楷体',38,'bold')
 43 t = Sprite(visible=False,pos=(-500,100))
 44 t.color('magenta')
 45 clock = Clock()
 46 for x in range(100):
 47     t.clear()
 48     t.write(s,align='center',font=ft)
 49     t.wait()
 50     t.fd(5)
 51     clock.tick(60)
 52 
 53 m1 = Mouse()          # 鼠标左键
 54 while not m1.down():screen.update()
 55 
 56 # 简介
 57 brief ="""
 58 数据之间是可以进行转换的,如整数可以转换小数,
 59 
 60 列表和元组可以互相转换,字符串也能转换成列表。
 61 
 62 本课主要学习一些命令,然后做练习以巩固所学。
 63 """
 64 if brief!='':  # 如果有课程简介,则生成一个角色,
 65     ftx = ('宋体',18,'normal')
 66     简介 = Sprite(visible=False,pos=(0,-100))
 67     简介.color('white')
 68     简介.write(brief,align='center',font=ftx)    
 69     while  m1.down():screen.update()    
 70     while not m1.down():screen.update()    
 71 
 72 for x in range(66):              # 标题向右消失
 73     t.clear()
 74     t.write(s,align='center',font=ft)    
 75     t.fd(10)
 76     if brief!='':        
 77         简介.clear()
 78         简介.write(brief,align='center',font=ftx)
 79         简介.bk(10)
 80     clock.tick(60)
 81 简介.clear()     
 82 
 83 #以下是显示学习的内容段
 84 studycontent = """
 85 主要学习内容
 86 
 87 1、int命令
 88 
 89 2、float命令
 90 
 91 3、bool命令
 92 
 93 4、str命令
 94 
 95 5、list命令
 96 
 97 6、tuple命令
 98 
 99 7、综合运用与作业
100 """
101 t.color('white')
102 t.clear()
103 t.sety(-260)              # 这里修改菜单的显示y坐标
104 ft = ('楷体',24,'bold')
105 s = studycontent
106 while not m1.down():screen.update()
107 #  下面的代码显示主菜单
108 for x in range(120):
109     t.clear()
110     t.write(s,align='center',font=ft)    
111     t.bk(5)
112     clock.tick(60)
113 
114 def slow_write(t,string):
115     """
116        t:角色,string:要显示的字
117        本函数慢慢的显示字。
118     """
119     string = string.split('\n') # 换成列表     
120     oldxy = t.position()   # 记录老的坐标
121     t.goto(-340,310)       # 到新的坐标
122     for line in string:    # 每一行字
123         for char in line:     # 每一个字符
124             t.write(char,align='center',font=ft)
125             t.wait(0.2)
126             cd = len(bytes(char,'gb2312'))
127             if cd == 1:
128                 t.addx(20)
129             else:
130                 t.addx(30)
131         t.setx(-336)
132         t.addy(-50)
133     t.goto(oldxy)
134      
135 s1 = """
136 1、int命令
137 
138 把小数或者全是数字的字符串转换成整数。
139 如int('32')返回结果就是32。int(3.14)返回3。
140 """
141 def press1():
142     t.clear()
143     slow_write(t,s1)
144     while not m1.down():screen.update()
145     t.clear()
146     t.write(s,align='center',font=ft)    
147 screen.onkeypress(press1,'1')
148 
149 
150 s2 = """
151 2、float命令
152 
153 把全是数字的字符串(包括.号)和整数转换成浮点数。
154 如float('10.9')得到10.9,float(56)得到56.0
155 """
156 def press2():
157     t.clear()
158     slow_write(t,s2)
159     while not m1.down():screen.update()
160     t.clear()
161     t.write(s,align='center',font=ft)    
162 screen.onkeypress(press2,'2')
163 
164 
165 s3 = """
166 3、bool命令
167 
168 把其它数据转换成逻辑数据。
169 如bool(10)返回True,bool(-10)也是返回True。
170 总之,非0的数据返回的都是真,0本来就是假。
171 bool('')返回False,bool('编程')返回True。
172 非空字符串返回真,空字符串返回假。
173 bool([])返回False,bool(['px','a'])返回True。
174 空列表返回假,非空列表返回真,元组也一样。  
175 """
176 def press3():
177     t.clear()
178     slow_write(t,s3)
179     while not m1.down():screen.update()
180     t.clear()
181     t.write(s,align='center',font=ft)    
182 screen.onkeypress(press3,'3')
183 
184 
185 s4 = """
186 4、str命令
187 
188 把其它数据转换成字符串,相当于把任何其它数据
189 加上引号。如str(123)结果是'123',
190 str([102,476])返回'[102,476]'。
191 """
192 def press4():
193     t.clear()
194     slow_write(t,s4)
195     while not m1.down():screen.update()
196     t.clear()
197     t.write(s,align='center',font=ft)    
198 screen.onkeypress(press4,'4')
199 
200 
201 s5 = """
202 5、list命令
203 
204 新建空列表,或者把字符串或元组转换成列表。
205 如list('abc')返回['a','b','c']
206 list((32,76))返回[32,76]。
207 以后会学range命令,它会产生一些数据。
208 如range(10)会产生从0到9的数据,用list命令
209 的话,那么list(range(10))就会产生下面的列表:
210 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
211 """
212 def press5():
213     t.clear()
214     slow_write(t,s5)
215     while not m1.down():screen.update()
216     t.clear()
217     t.write(s,align='center',font=ft)    
218 screen.onkeypress(press5,'5')
219 
220 s6 = """
221 6、tuple命令
222 
223 新建空元组,或者把列表或字符串转换成元组。
224 如tuple('abc')得到('a','b','c'),
225 tuple([102,476,8])得到(102,476,8),
226 tuple(str(65))得到('6','5')
227 """
228 def press6():
229     t.clear()
230     slow_write(t,s6)
231     while not m1.down():screen.update()
232     t.clear()
233     t.write(s,align='center',font=ft)    
234 screen.onkeypress(press6,'6')
235 
236 s7 = """
237 7、综合运用与作业
238    
239 int(str(32)),   
240 str(type(32)),
241 float(id(256))
242 type(len('ab')),
243 len(str(type(()))) ,
244 len(str(type('爱编程'))),
245 list(str(id(len('abc')))),
246 len(str(['风火轮编程','Python']),   
247 len('Python') * 3 + len('Python'*3)
248 """
249 def press7():
250     t.clear()
251     slow_write(t,s7)
252     while not m1.down():screen.update()
253     t.clear()
254     t.write(s,align='center',font=ft)    
255 screen.onkeypress(press7,'7')
256 
257  
258 
259 byebye = """
260 下次再见!
261 """
262 def pressq():
263     t.clear()
264     t.color('cyan')
265     t.home()
266     t.write(byebye,align='center',font=('宋体',38,'bold'))
267     while not m1.down():screen.update()
268     screen.bye()    
269 screen.onkeypress(pressq,'q')
270 
271 
272 screen.mainloop()

 

posted on 2020-05-11 11:31  李兴球  阅读(219)  评论(0编辑  收藏  举报