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()