1 """
  2    第四课,数字变量与赋值

      用Python制作的幻灯片类型的作品,用来教Python数字变量与赋值及累加的,以下是完整源代码。本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
      pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites --upgrade

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 
 14 ft = ('楷体',38,'bold')
 15 t = Sprite(visible=False,pos=(-500,0))
 16 t.color('magenta')
 17 clock = Clock()
 18 for x in range(110):
 19     t.clear()
 20     t.write(s,align='center',font=ft)
 21     t.wait()
 22     t.fd(5)
 23     clock.tick(60)
 24 
 25 m1 = Mouse()          # 鼠标左键
 26 while not m1.down():screen.update()
 27 
 28 for x in range(50):
 29     t.clear()
 30     t.write(s,align='center',font=ft)
 31     t.wait()
 32     t.fd(10)
 33     clock.tick(60)
 34     
 35 #以下是显示学习的内容段
 36 studycontent = """
 37 主要学习内容
 38 
 39 1、变量的概念
 40 
 41 2、赋值与累加 
 42 
 43 3、整型数据
 44 
 45 4、浮点型数据
 46 
 47 5、逻辑型数据
 48 
 49 6、type命令
 50 
 51 7、id命令
 52 
 53 8、del命令
 54 
 55 """
 56 t.color('white')
 57 t.clear()
 58 t.sety(-340)
 59 ft = ('楷体',24,'bold')
 60 s = studycontent
 61 while not m1.down():screen.update()
 62 #  下面的代码显示主菜单
 63 for x in range(110):
 64     t.clear()
 65     t.write(s,align='center',font=ft)
 66     t.wait()
 67     t.bk(5)
 68     clock.tick(60)
 69 
 70 screen.listen()
 71 
 72 def slow_write(t,string):
 73     """
 74        t:角色,string:要显示的字
 75        本函数慢慢的显示字。
 76     """
 77     string = string.split('\n') # 换成列表     
 78     oldxy = t.position()   # 记录老的坐标
 79     t.goto(-340,310)       # 到新的坐标
 80     for line in string:    # 每一行字
 81         for char in line:     # 每一个字符
 82             t.write(char,align='center',font=ft)
 83             t.wait(0.2)
 84             cd = len(bytes(char,'gb2312'))
 85             if cd == 1:
 86                 t.addx(20)
 87             else:
 88                 t.addx(30)
 89         t.setx(-336)
 90         t.addy(-50)
 91     t.goto(oldxy)
 92      
 93 s1 = """
 94 1、变量的概念:
 95 变量是存储在内存中的一个对象,
 96 这个对象有名字,有地址,有具体的值。
 97 Python通过变量的名字就能找到这个值。
 98 下面的代码可以定义一个变量,这个变量
 99 的值是一个整数。
100 x=10,变量可以有多个名字,如y=x,就是
101 给x变量又取了一个名字。这两个变量名都
102 指向同一个数值。
103 (单击返回主菜单)
104 """
105 def press1():
106     t.clear()
107     slow_write(t,s1)
108     while not m1.down():screen.update()
109     t.clear()
110     t.write(s,align='center',font=ft)    
111 screen.onkeypress(press1,'1')
112 
113 
114 s2 = """
115 2、赋值与累加:
116 在Python中的等于号叫赋值号。
117 所谓赋值就是把赋值号右边的
118 计算结果赋值给左边的变量。
119 如,y=100,就是把100赋值给y。
120 而,z=y+200,会先把y+200的结果算出来,
121 再赋值给z。
122 那么,y=y+100,就会把y+100的值计算出来,
123 再赋值给y,所以注意这里和数学中有区别。
124 也就是说赋值号并不是判断两边的值相等的意思。
125 像 y=y+100这样的式子叫累加,也可以写做
126 y+=100
127 (单击返回主菜单)
128 """
129 def press2():
130     t.clear()
131     slow_write(t,s2)
132     while not m1.down():screen.update()
133     t.clear()
134     t.write(s,align='center',font=ft)    
135 screen.onkeypress(press2,'2')
136 
137 
138 s3 = """
139 3、整型数据:
140 刚才我们已经使用了整数。在Python中它们叫做
141 整型数据。如32,65536。我们可以把一个整型
142 数据赋值给一个变量,如x=32,那么通过x就能
143 访问到32这个数据。x就是一个整型变量,
144 或者说是整数变量。整数的英文名叫integer,
145 简写为int。
146 (单击返回主菜单)
147 """
148 def press3():
149     t.clear()
150     slow_write(t,s3)
151     while not m1.down():screen.update()
152     t.clear()
153     t.write(s,align='center',font=ft)    
154 screen.onkeypress(press3,'3')
155 
156 
157 s4 = """
158 4、浮点型数据:
159 在Python中用浮点型数据表示小数。如3.14
160 ,10.0或者0.01都是浮点型数据。我们可以定义
161 一个变量的值为一个小数,如pai=3.14,
162 那么pai就是一个小数变量。浮点型写做float。
163 它在英文中的本意是飘浮的意思。为什么取名
164 为“飘浮”数据呢?这是由于在计算机中不能
165 精确地表示小数,像是飘浮不定的样子,所以
166 就取了这么个名字。
167 (单击返回主菜单)
168 """
169 def press4():
170     t.clear()
171     slow_write(t,s4)
172     while not m1.down():screen.update()
173     t.clear()
174     t.write(s,align='center',font=ft)    
175 screen.onkeypress(press4,'4')
176 
177 
178 s5 = """
179 5、逻辑型数据:
180 在Python中要表示真或者假,成立或者不成立,
181 用的是逻辑数据。逻辑数据只有两个值,一个
182 是True,代表真、是、成立的意思。另一个是
183 False,代表假,不是,否,不成立的意思。
184 当然,我们也可以把逻辑数据赋值给一个变量,
185 如 x=True,y=False。
186 逻辑数据之间可以进行加、减、乘、除等运算。
187 把True乘以3的结果是3,False乘以3的结果是0。
188 大家可以在IDLE中测试一下,会得出一个结论,
189 那就是True实际上就是1,而False实际上就是0。
190 逻辑数据也叫布尔数据,英文为boolean,简写
191 为bool。int、float和bool型变量统称为数字变量。
192 英文名为numeric。(单击返回主菜单)
193 """
194 def press5():
195     t.clear()
196     slow_write(t,s5)
197     while not m1.down():screen.update()
198     t.clear()
199     t.write(s,align='center',font=ft)    
200 screen.onkeypress(press5,'5')
201 
202 s6 = """
203 6、type命令:
204 在Python中用type命令显示数据或者变量的类型。
205 如type(256),会返回<class 'int'>,class是类
206 型的意思,int是整数的意思。
207 也可以把一个整数赋值给一个变量,如x=32,
208 在IDLE中输入type(x)也会返回<class 'int'>。
209 如果输入type(3.14),则返回<class 'float'>。
210 表示3.14这个数是一个浮点型数据。
211 如果输入type(True),返回<class 'bool'>。
212 表示True是一个布尔型,也就是逻辑型数据。
213 (单击返回主菜单)
214 """
215 def press6():
216     t.clear()
217     slow_write(t,s6)
218     while not m1.down():screen.update()
219     t.clear()
220     t.write(s,align='center',font=ft)    
221 screen.onkeypress(press6,'6')
222 
223 s7 = """
224 7、id命令:
225 在Python中,一个变量就是一个对象。一个
226 具体的对象是有名称,有地址,有具体的值。
227 那么这个地址可以通过id命令得到。假设有名字为
228 x变量,它的值为128,那么id(x)就能得到这个
229 变量的地址。在Python中也称为这个变量的编号
230 。它是一串数字。这就像每个变量都有一个门牌
231 号码一样。通过门牌号码,Python就能访问到变
232 量的值。
233 (单击返回主菜单)
234 """
235 def press7():
236     t.clear()
237     slow_write(t,s7)
238     while not m1.down():screen.update()
239     t.clear()
240     t.write(s,align='center',font=ft)    
241 screen.onkeypress(press7,'7')
242 
243 
244 s8 = """
245 8、del命令。
246 如果要删除一个变量怎么办呢?
247 在Python中没有直接提供删除变量的机制。
248 但是提供了删除变量名字的命令。
249 这个命令叫del。有时候,我们可以通过删除
250 变量的名字间接的删除变量,但是如果变量
251 有多个名字,那么这个变量还是没有被删除。
252 本质上,我们是不能删除一个变量的。
253 如果一个变量失去了所有的名字,Python会
254 自动删除这个变量。
255 (单击返回主菜单)
256 """
257 def press8():
258     t.clear()
259     slow_write(t,s8)
260     while not m1.down():screen.update()
261     t.clear()
262     t.write(s,align='center',font=ft)    
263 screen.onkeypress(press8,'8')
264 
265 byebye = """
266 下次再见!
267 """
268 def pressq():
269     t.clear()
270     t.color('cyan')
271     t.home()
272     t.write(byebye,align='center',font=('宋体',38,'bold'))
273     while not m1.down():screen.update()
274     screen.bye()    
275 screen.onkeypress(pressq,'q')
276 
277 
278 screen.mainloop()