www.lixingqiu.com Python www.lixingqiu.com 2020/9/10 1
www.lixingqiu.com Python Python 英文表一 (4) Python 英文表二 (5) Python 英文表三 (6) 屏幕命令一 (7) 屏幕命令二 (8) 屏幕命令三 (9) 海龟命令一 (10) 海龟命令二 (11) 海龟命令三 (12) 海龟命令四 (13) 其它命令 (14) 常见颜色单词 (15) 常见按键名字表 (16) ASCII 码表 (17) 导入方式说明 (18) 获取屏幕的方法总结 (19) 关于变量 (20) 造型字典与造型列表 (21) 2
www.lixingqiu.com 自定义造型 (22) 常见例程:夜幕下的霓虹 (23) 常见例程:画正多边形与函数 (24) 常见例程之动画与填充 (25) 类的继承 (26) 常见例程之单击事件与定时器 (27) 常见错误提示一 (28) 常见错误提示二 (29) 关键词一 (30) 关键词二 (31) 关键词三 (32) 关键词四 (33) 关键词五 (34) 海龟最简弹球 (35) 海龟之外 tkinter 最简弹球 (36) 海龟之外 pygame 最简弹球 (37) 3
www.lixingqiu.com Python file 文件 edit 编辑 forward 前进 screen 屏幕 new 新建 cut 剪切 right 向右 while open 打开 copy 复制 pen if 如果 recent 最近的 paste 粘贴 list 列表 else 否则 save 保存 find 查找 index 索引 for 更新 print 打印 replace 替换 range 范围 error 错误 turtle 海龟 configure 配置 goto name 名字 close 关闭 option 选项 random 随机 append 添加 exit 退出 shape 造型 width 宽度 import 导入 shell 界面 size 尺寸 height 高度 left 向左 4
www.lixingqiu.com Python synax 语法 key clone 克隆 mode 模式 string 字符串 value angle 角度 input 输入 debug 调试 dictionary 字典 heading 朝向 update 刷新 module 模块 canvas 画布 set 设置 type 类型 undo 撤销 root click 单击 class 类别 / 班级 redo 重做 move 移动 press 按下 main 主要的 indent 缩进 stamp 图章 timer 定时器 loop 循环 comment 注释 fill 填充 reset 重置 counter 计数器 show 显示 clear 清除 text 文本 register 注册 hide 隐藏 shape 造型 delay 延时 coordinate 坐标 5
www.lixingqiu.com Python software 软件 distance 距离 drag 拖曳 bottom graphic 图形 value position 位置 draw 绘画 command 命令 dot 圆点 get 得到 square 方形 function 函数 circle 圆形 release 释放 / 松开 mouse 鼠标 / 老鼠 title 标题 / 抬头 arrow 箭头 done 做完了 keyboard 键盘 sleep 睡眠 / 等待 triangle 三角形 item 项目 event 事件 math 数学 ( 模块 ) blank 空白 execute 执行 listen 监听 path 路径 classic 经典 attribute 属性 background 背景 split 辟开 speed 速度 self 自己 integer 整数 join 连接 toward 朝向 top boolean 布尔 / 逻辑 6
www.lixingqiu.com 页码 屏幕命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 Screen 新建或返回屏幕,调用形式: Screen() 2 ScrolledCanvas 新建可滚动画布 3 TurtleScreen 新建屏幕 ( 需要有画布做为参数 ) 4 addshape / register_shape 在造型字典中添加造型,常见调用形式: screen.addshape(‘gif 文件 ’) 5 bgcolor 设定屏幕背景颜色,调用形式: screen.bgcolor(‘red’) 6 bgpic 设定屏幕背景图片,调用形式: screen.bgpic(‘ 图像文件名 ’) 7 bye 关闭窗口,如: screen.bye() 8 clear 删除所有绘画项目和所有海龟,如: screen.clear() 9 colormode 设定或返回颜色模式,如: screen.colormode(255) 10 delay 绘画延时,默认的延时为 10 毫秒,设定绘画延时为 0 毫秒: screen.delay(0) 11 exitonclick 单击关闭窗口,如: screen.exitonclick() 12 getcanvas 获取画布,如: canvas = screen.getcanvas() 13 getshapes 如: screen.getshapes() ,返回造型字典中的按字母顺序排序的 key 列表。 14 listen 监听按键检测,如: screen.listen() 7
www.lixingqiu.com 页码 屏幕命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 mainloop 进入主循环,如: screen.mainloop() 2 mode 设定海龟模式并重置屏幕,有三种 standard logo world 3 numinput 数字输入框,如: screen.numinput(‘ 标题 ’,’ 提示 ’) 4 onkey / onkeyrelease 当按键松开时,如: screen.onkey(lambda:turtle.fd(10),‘Up’) 5 onkeypress 当按下某键时,如: screen.onkeypress(lambda:turtle.fd(10),‘Up’) 6 onclick / onscreenclick 单击屏幕时,调用形式: screen.onclick(turtle.goto) 7 ontimer 定时器,在某个时间后再次运行某个命令。如: screen.ontimer(fun,500) 8 reset / resetscreen 重置所有的海龟对象,如: screen.reset() 9 screensize 设定画布尺寸,如: screen.screensize(480,360,bg=‘red’) 10 setup 设定屏幕宽度和高度,如: screen.setup(480,360) 11 setworldcoordinates 自定义坐标秒,如: screen.setworldcoordinates(-10,- 10 , 1 0,1 0 ) 12 textinput 文本输入框,如: screen.textinput(‘ 标题 ’,’ 提示 ’) 13 title 设定窗口标题,如: screen.title(‘ 这是窗口的标题 ’) 14 tracer 设定追踪命令,默认为 1 ,即每次海龟发生了动作即更新显示。 8
www.lixingqiu.com 页码 屏幕命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 turtles 返回所有的海龟到列表中,如: screen.turtles() 2 update 更新屏幕显示,如: screen.update() 3 window_height 返回窗口高度,如: screen.window_height() 4 window_width 返回窗口宽度,如: screen.window_width() 5 6 7 8 9 10 11 12 13 14 9
www.lixingqiu.com 页码 海龟 / 画笔命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 bk / back / backward 倒退命令,如: turtle.bk(100) 2 begin_fill end_fill 填充是一对命令,在开始填充之前调用 begin_fill ,画完后再调用 end_fill 3 circle 画圆命令,如: turtle.circle(100) ,画一个半径为 100 的圆形。 4 clear 清除海龟所画的图形,包括图章。如: turtle.clear() 5 clearstamp 根据图章编号清除一个图章,如: turtle.clearstamp(8) 6 clearstamps 不带参数清除所有图章,带参数清除前 n 个图章,如 turtle.clearstamps(5) 7 clone 克隆海龟,如: turtle.clone() 会返回一只和 turtle 一模一样的海龟。 8 color 设定画笔和填充颜色,如: turtle.color(‘red’,’yellow’) 9 degrees 设定角度测量单位为度,如: turtle.degrees() 10 distance 返回到另一个海龟或另一个坐标点的距离,如: turtle.distance(30,40) 11 dot 打圆点命令,参数为直径,如: turtle.dot(100) 12 down / pendown / pd 落笔命令,如: turtle.pendown() 13 begin_poly / end_poly 多边形命令,这是一对命令,记录所画多边形顶点。 14 getpen / getturtle 获取海龟本身,如: turtle.getpen() 10
www.lixingqiu.com 页码 海龟 / 画笔命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 getscreen 获取屏幕,如: turtle.getscreen() 2 goto/setpos / setposition 到达,设置坐标命令,如: turtle.goto(10,10) 3 heading 获取海龟方向,如: turtle.heading() 4 ht / hideturtle 隐藏海龟,如: turtle.ht() 5 home 回家命令,即到达原点,如: turtle.home() 6 isdown 是否落笔命令,如: turtle.isdown() 7 isvisible 是否可见命令,如: turtle.isvisible() 8 left / lt 左转命令,如: turtle.left(90) 9 onclick 单击命令,如: turtle.onclick(fun) 10 ondrag 拖动命令,如: turtle.ondrag(turtle.goto) 11 onrelease 当鼠标按键松开,如: turtle.onrelease(fun) 12 pen 设置或返回画笔属性,如 turtle.pen( pencolor="red", pensize=8) 13 pencolor 设定或返回画笔颜色,如: turtle.pencolor(‘red’) 14 pensize / width 设定画笔的笔迹宽度,或叫线宽,如: turtle.pensize(10) 11
www.lixingqiu.com 页码 海龟 / 画笔命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 penup / up / pu 抬笔,如: turtle.penup() 2 radians 设定角度测量单位为弧度。 3 right / rt 右转,如: turtle.right(90) 4 reset 重置,如: turtle.reset() 5 resizemode 设置或返回调整模式,如果模式为 “auto” ,则根据画笔线宽调整外观。 6 setheading / seth 设定方向,如: turtle.setheading(90) 7 settiltangle / tileangle 设定海龟造型的倾斜角,海龟方向并没有变,如: turtle.settiltangle(45) 8 tilt 旋转海龟造型一定的角度,海龟的方向并没有改变,如: turtle.tilt(10) 9 setundobuffer 设置撤销次数,如: turtle.setundobuffer(None) 会禁用撤销功能。 10 setx 设置海龟的 x 坐标,如: turtle.setx(100) 11 sety 设置海龟的 y 坐标,如: turtle.sety(100) 12 shape 设置海龟的造型,如: turtle.shape(‘square’) 13 shapesize / turtlesize 设置海龟的大小,如: turtle.shapesize(3,5,10) 14 shapetransform 设置或返回海龟的变形矩阵,如: turtle.shapetransform(4.0,-1.0,0,2) 12
www.lixingqiu.com 页码 海龟 / 画笔命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 speed 速度,设置 0 为最快,如: turtle.speed(1) 2 showturtle / st 显示海龟,如: turtle.showturtle() 3 stamp 盖图章,返回编号,如: turtle.stamp() 4 towards 返回朝向另一只海龟或坐标的角度,如: turtle.towards(0,0) 5 undo 撤销某个动作,如: turtle.undo() 6 undobufferentries 返回可撤销次数,如: turtle.undobufferentries() 7 write 写字,如: turtle.write( 编程 ,align= center ’, font=( 宋体 ,32, bold ) 8 xcor 获取 x 坐标,如: turtle.xcor() 9 ycor 获取 y 坐标,如: turtle.ycor() 10 position / pos 获取坐标,返回二元组,如: turtle.position() 11 Turtle / Pen 新建海龟或画笔 12 RawTurtle / RawPen 新建原生海龟 13 14 13
www.lixingqiu.com 页码 海龟 / 画笔命令 简要说明,假设屏幕对象为 screen ,海龟对象为 turtle 1 Shape 新建造型,如: Shape(‘image’,screen._image(‘test.png’)) 2 Vec2D 新建 2D 向量,如: Vec2D(10,10) 14
www.lixingqiu.com red 红色 brown 棕色 plum 紫红色 maroon 褐红色 orange 橙色 magenta 品红色 navy 深蓝色 dodger blue 闪蓝色 yellow 黄色 gold 金黄色 coral 珊瑚色 azure 蔚蓝色 green 绿色 lime 亮绿色 violet 紫色 lavender 淡紫色 cyan 青色 tomato 番茄色 gray 灰色 snow 雪白色 blue 蓝色 wheat 小麦色 ivory 乳白色 thistle 蓟色 purple 紫色 tan 棕褐色 khaki 土黄色 black 黑色 pink 粉红色 sky blue 天蓝色 linen 亚麻色 white 白色 15
www.lixingqiu.com Alt_L 左变换键 Alt_R 右变换键 BackSpace 退格键 Caps_Lock 大写锁定 Control_L 左控制键 Control_R 右控制键 Delete 删除键 Down 向下箭头 End 结束键 Escape 取消键 Home 回家键 Insert 插入键 Left 向左箭头 Num_Lock 数字锁定 Pause 暂停键 Return 回车键 Right 向右箭头 Scroll_Lock 滚动锁定 Shift_L 左上档键 Shift_R 右上档键 Tab 制表键 Up 向上箭头 colon 冒号 comma 逗号 equal 等于号 plus 加号 semicolon 分号 slash 正斜杠 quotedbl 双引号 numbersign # percent 百分号 quoterigh t 单引号 less 小于号 greater 大于号 backslash 反斜杠 quotelef t 反引号 period 点号键 minus 减号 exclam 感叹号 dollar 美元符号 16
www.lixingqiu.com ASCII 字符 十进制 字符 十进制 字符 十进制 字符 十进制 字符 十进制 字符 十进制 32 0 48 @ 64 P 80 ` 96 p 112 ! 33 1 49 A 65 Q 81 a 97 q 113 34 2 50 B 66 R 82 b 98 r 114 # 35 3 51 C 67 S 83 c 99 s 115 $ 36 4 52 D 68 T 84 d 100 t 116 % 37 5 53 E 69 U 85 e 101 u 117 & 38 6 54 F 70 V 86 f 102 v 118 39 7 55 G 71 W 87 g 103 w 119 ( 40 8 56 H 72 X 88 h 104 x 120 ) 41 9 57 I 73 Y 89 I 105 y 121 * 42 : 58 J 74 Z 90 j 106 z 122 + 43 ; 59 K 75 [ 91 k 107 { 123 , 44 < 60 L 76 \ 92 l 108 | 124 - 45 = 61 M 77 ] 93 m 109 } 125 . 46 > 62 N 78 ^ 94 n 110 ~ 126 / 47 ? 63 O 79 _ 95 o 111 127 17
www.lixingqiu.com import turtle # turtle delay tracer bgcolor title setup addshape forward right turtle.Turtle() turtle.Screen() import turtle as t t.Turtle() from turtle import * # forward(100) 100 Turtle() 使 Turtle Screen from turtle import Screen,Turtle 18
www.lixingqiu.com from turtle import Screen s = Screen() # import turtle s = turtle.Screen() from turtle import Turtle tom = Turtle() s = tom.screen # import turtle s = turtle.getscreen() # >>> from turtle import * >>> g = Turtle() >>> Turtle._screen <turtle._Screen object at 0x02A40598> >>> g.screen <turtle._Screen object at 0x02A40598> >>> g.getscreen() <turtle._Screen object at 0x02A40598> >>> Screen() <turtle._Screen object at 0x02A40598> >>> 19
www.lixingqiu.com : = : 1 线 2 3 4 使 : 1, 2 = 1, 2 1 = 2 = 3 = : = + += : Python : global : 使 : counter = 0 tom = Turtle() rose = tom # 20
www.lixingqiu.com >>> from turtle import Turtle,Screen >>> screen = Screen() >>> screen._shapes {'arrow': <turtle.Shape object at 0x02AD0958>, 'turtle': <turtle.Shape object at 0x02B64088>, 'circle': <turtle.Shape object at 0x02B640B8>, 'square': <turtle.Shape object at 0x02B640E8>, 'triangle': <turtle.Shape object at 0x02B64118>, 'classic': <turtle.Shape object at 0x02B64148>, 'blank': <turtle.Shape object at 0x02B641A8>} >>> screen.getshapes() ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle', 'turtle'] >>> tom = Turtle(shape='turtle') >>> tom.shape('triangle') >>> # # # # # tom turtle # tom Python _shapes getshapes 便 classic 21
www.lixingqiu.com import turtle turtle.begin_poly() for x in range(8): turtle.fd(50) turtle.bk(50) turtle.left(45) turtle.end_poly() p = turtle.get_poly() turtle.addshape("mi", p) turtle.shape('mi') turtle.clear() while True:turtle.rt(1) # # # 8 x # 50 # 退 50 # 45 # # # mi # mi # # 22
www.lixingqiu.com from random import randint,choice from turtle import Turtle,Screen width,height = 480,360 cs = ['red','orange','yellow', 'green','cyan','blue', 'purple','pink','gray'] screen = Screen() screen.setup(width,height) screen.title(" ") screen.bgcolor('black') tom = Turtle(visible=False) tom.penup() while True: x = randint(-width//2,width//2) y = randint(- height//2,height//2) tom.goto(x,y) tom.color(choice(cs)) tom.dot(20) # # Turtle Screen # # # # # # # tom # # # x -width//2,width//2 # y -height//2,height//2 # tom x,y # cs tom # 20 23
www.lixingqiu.com import turtle def draw_polygon(n,length): """ n length """ for x in range(n): turtle.fd(length) turtle.left(360/n) turtle.delay(0) turtle.speed(0) turtle.title(' ') turtle.bgcolor('black') turtle.pencolor('cyan') for number in range(3,11): draw_polygon(number,100) turtle.done() # # draw_polygon # n x # length # 360/n # 0 # # # # # 3 11 number # draw_polygon # ( ) 24
www.lixingqiu.com import time import turtle turtle.ht() turtle.tracer(0,0) turtle.fillcolor('dodger blue') while True: turtle.clear() turtle.begin_fill() for x in range(6): turtle.fd(150) turtle.left(144) turtle.end_fill() turtle.update() turtle.left(1) time.sleep(0.01) # # # # 0 # # # # # 6 x # 150 # 144 # # # 1 # 0.01 Python 25
www.lixingqiu.com from turtle import Turtle class MyTurtle(Turtle): def glow(self,x,y): self.fillcolor("red") def unglow(self,x,y): self.fillcolor("") tom = MyTurtle() tom.speed(0) tom.shape('turtle') tom.shapesize(10) tom.onclick(tom.glow) tom.onrelease(tom.unglow) tom.ondrag(tom.goto, btn=1, add=None) # Turtle # MyTurtle Turtle # glow # # unglow # # MyTurtle tom # tom # tom turtle # tom 10 # tom tom glow # unglow # tom tom.goto MyTurtle Turtle glow unglow 26
www.lixingqiu.com from turtle import * screen = Screen() running = True def f(): if running: fd(50) lt(60) screen.ontimer(f, 250) f() def flip(x,y): global running running = not running screen.onclick(flip) screen.mainloop() # # # running # f # running # 50 # 60 # 250 f # f # flip # running # running # flip # …… 27
www.lixingqiu.com name error NameError: name 'j' is not defined 使 index error IndexError: list index out of range attribute error AttributeError: 'list' object has no attribute 'a‘ a 使 syntax error SyntaxError: EOL while scanning string literal print(‘a“) 28
www.lixingqiu.com type error TypeError: can only concatenate str (not "list") to str FileNotFound error FileNotFoundError: [Errno 2] No such file or directory: 'c:/aa.txt‘ Permission error PermissionError: [Errno 13] Permission denied: 'c:/ .txt' key error KeyError: 'a' 使 使 s = { } s[ 'a' ] 29
www.lixingqiu.com and assert false >>> a = 1 >>> assert a ==1 a 1 import turtle as haigui while for and as assert break class Test: pass class while for continue 30
www.lixingqiu.com ( ) None >>> def fun1(x,y): z = x + y return z except 使 c:/a.txt 使 try try: f = open("c:/a.txt") c = f.read() f.close() except: print(' ') print(' ') def try 使 if 使 : a = 1 if a > 1: print('a 1 ') elif a == 1: print('a 1 ') elif a < 1: print('a 1 ') elif True False 31
www.lixingqiu.com : from turtle import * : >>> 'a' in 'cdab' True >>> 32 in [76,32,8] True >>> 'x' in {'a':[],'b':' '} False from in finally : try: f = open("c:/test2.txt") f.read() f.close() except: print(' ') finally: print(" ") finally :a = 3 b = a , a is b is 32
www.lixingqiu.com or :a = 1,b = 2, a == 1 or b == a a = input(" ") if(not a.isdigit()): raise ValueError(" ") or raise nonlocal : def fun(): x = 10 def add(): nonlocal x x = x + 1 return x print(add()) fun() nonlocal None None 33
www.lixingqiu.com with open('c:/test.txt') as f: content = f.read() print(content) for for : for c in 'abcdefg': print(c,end='#') with for while : import turtle as tt c = 0 while c < 8: tt.fd(100) tt.left(45) c = c + 1 while : return True return 34
www.lixingqiu.com import turtle dx ,dy = 1,1 w,h = 480, 360 turtle.setup(w,h) turtle.shape('circle') turtle.speed(0) turtle.penup() while True: x = turtle.xcor() y = turtle.ycor() x = x + dx y = y + dy turtle.goto(x,y) if abs(x) > w//2:dx = -dx if abs(y) > h//2:dy = -dy # # dx,dy # w,h # # # # # # x # y # x dx # y dy # x,y # dx # dy 35
www.lixingqiu.com import time from tkinter import * r , dx ,dy = 40 ,1 ,1 w,h = 480,360 root = Tk() root.title(' tkinter ') canvas = Canvas(root,width=w,height=h,bg='cyan') canvas.pack() box = w/2-r,h/2-r,w/2+r,h/2+r ball = canvas.create_oval(box,fill='blue') while True: canvas.move(ball,dx,dy) left,top,right,bottom = canvas.coords(ball) if left <= 0 or right >= w:dx = -dx if top <= 0 or bottom >= h:dy = -dy canvas.update() time.sleep(0.01) # # tkinter # # # # # # # # # # # # # # # 0.01 tkinter 36
www.lixingqiu.com import pygame r ,dx ,dy = 40 ,1 ,1 w,h = 480,360 x,y = w//2,h//2 screen = pygame.display.set_mode((w,h)) pygame.display.set_caption("pygame ") clock = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False x = x + dx ; y = y + dy left,top,right,bottom = x-40,y-40,x+40,y+40 if left <= 0 or right >= w:dx = -dx if top <= 0 or bottom >= h:dy = -dy screen.fill((0,255,255)) pygame.draw.circle(screen,(0,0,255),(x,y),r ) pygame.display.update() clock.tick(100) pygame.quit() # pygame # # # x,y # # # # # # # 退 # running # x y dx dy # # # # screen # screen # # 0.01 # 退 pygame pygame 37
www.lixingqiu.com 38
www.pygame.net