一、異常處理
1.模塊
導入模塊(自定義模塊,第三方模塊)
import 模塊 ---->模塊.內容
from 模塊 import 內容 --->內容
被導入的模塊中,除了在聲明在if name == 'main':判斷中以外的其他的全局變量
2.文件操作
打開文件--->操作文件 --->關閉文件
open()操作文件 close()
--->with open() as 文件:
操作文件
open(打開文件路徑,打開方式,編碼方式--->二進制文件不能去設置編碼方式)
文本文件 ->'r'/'w','a'
二進制文件 ->'rb'/'wb
以讀的形式打開文件,如果文件不存在會報錯。以寫的方式打開文件,如果文件不存在,會在指定的路徑下創建該文件
read()---->讀文件中所有的內容
write()---->將內容添加到文件中
3.json文件
json支持的數據類型和其對應的字面量
字符串(string) --->""
數字(number)---->1,1.2
布爾 ---->true/false
數組(array)--->[12,"abc",hhh]
字典(object)--->{key:value}
null --->null(空)
import json
json.load(json文件對象)--->讀,讀出來的數據類型和json對應的數據類型是一樣的,可以直接讀出字典、列表等數據
json.dump(要寫入文件中的數據,json文件對象)-->寫,python中的基本數據類型,都可以直接寫到json文件中
4.異常捕獲
try:
需要捕獲異常的代碼(就是這段代碼如果出現異常,不讓程序崩潰)
except:
只要try后面的代碼出現異常都會執行這行代碼,并且程序不會崩潰
try:
需要捕獲異常的代碼塊
except 異常類型:
出現指定異常后才會執行
try--except執行過程:
先執行try后面的代碼塊,只要出現異常就使用except去捕獲,如果能捕獲到,就直接進入except
執行里面的代碼塊,執行完成后,再執行后面的其他語句。如果捕獲不到,就直接報錯。
如果try后面的代碼塊中,沒有異常。那么執行完代碼塊中的內容直接執行其他的語句
想要捕獲多個異常:except(錯誤類型1,錯誤類型2....):
try:
代碼塊1
except:
代碼塊2
finally:
代碼塊3
try:
代碼塊1
except 錯誤類型1:
代碼塊2
except 錯誤類型2:
代碼塊3
代碼塊3是在代碼塊1中沒有異常和代碼塊1中出現異常被捕獲到都會執行
raise:拋出異常
總結:
1.異常捕獲不是什么時候都要用的,只有在程序員清楚會出現異常,并且想要自己來處理異常,而不是讓程序崩潰的情況才異常捕獲
2.使用異常捕獲的時候,不能讓except直接捕獲到所有的異常,而是捕獲特定異常
try:
print([1,2,3][5])
print({'a': 'b', 'b': 1}['c'])
except (IndexError,KeyError):
print('出現異常')
print('=======')
出現異常
二、pygame基礎操作
import pygame
pygame.display.set_mode((600,400))
if name == 'main':
1.初始化pygame
pygame.init()
2.創建游戲窗口
set_mode((寬度,高度))
screen = pygame.display.set_mode((600,400))
#3.游戲循環
while True:
#檢測事件
for event in pygame.event.get():
#檢測窗口上的關閉按鈕是否被點擊
if event.type == pygame.QUIT:
#退出游戲
print('關閉游戲被點擊')
exit()
三、顯示文字
"""author__zhangdong"""
import pygame
if name == 'main':
pygame.init()
screen = pygame.display.set_mode((600,400))
#設置窗口的北京顏色
screen.fill((255,255,255))
#1.創建字體對象
"""創建系統字體
SysFont(name, size, bold=False, italic=False)
name ->字體名
size ->字體大小
bold ->加粗
italic->傾斜
"""
# font = pygame.font.SysFont('宋體',50)
"""
創建自定義字體
Font(字體文件路徑,字體大小)
"""
font = pygame.font.Font('./test1/font/aa.ttf',40)
#2.根據字體去創建顯示對象(文字)(找內容)
"""
render()
text-->要顯示的文字內容(str)
antialias-->是否平滑
color-->計算機三原色(紅、綠、藍),RGB顏色,值的范圍都是0--255
(255,0,0)->紅色
(0,255,0)->綠色
(0,0,255)->藍色
(0,0,0)->黑色
(255,255,255)->白色
"""
surface = font.render('君不見黃河之水天上來',True,(0,255,0))
#3.將內容添加到窗口上(畫到紙上)
"""
blit(需要顯示的對象,顯示位置)
需要顯示的對象-->Surface類型的數據
顯示位置-->坐標(x,y)
"""
screen.blit(surface,(100,200))
#4.將窗口上的內容展示出來(將畫有文字的紙貼出來)
pygame.display.flip()
#游戲循環
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
四、顯示圖片
"""author__zhangdong"""
import pygame
if name == 'main':
pygame.init()
screen = pygame.display.set_mode((600,400))
screen.fill((255,255,255))
#1.獲取圖片對象
image = pygame.image.load('./images/photo.jpg')
"""
a.獲取圖片大小
get_size()
"""
image_size = image.get_size()
print(image_size)
"""
b.形變
transform:形變包含縮放,旋轉和平移
scale(縮放對象,新的大小)--->返回一個新的對象
"""
# image = pygame.transform.scale(image,(50,50))
"""
旋轉
ratate(旋轉對象,旋轉角度)-->角度是0-360的度數
"""
image = pygame.transform.rotate(image,90)
"""
rotozoom(Surface, angle, scale)
rotozoom(旋轉對象, 旋轉角度, 縮放比例)
"""
image = pygame.transform.rotozoom(image,-90,0.5)
#2.將圖片對象渲染到窗口上
screen.blit(image,(0,0))
#3,展示在屏幕上
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
五、顯示圖形
"""author__zhangdong"""
import pygame
if name == 'main':
pygame.init()
screen = pygame.display.set_mode((600,400))
screen.fill((255,255,255))
"""
1.畫直線
line(Surface, color, start_pos, end_pos, width=1)
line(畫在哪個地方,線的顏色,線的起點,線的終點, 線的寬度)
"""
pygame.draw.line(screen,(255,0,0),(0,0),(200,200),5)
pygame.draw.line(screen, (255, 255, 0), (200, 200), (400, 400), 5)
"""
lines(Surface, color, closed, pointlist, width=1)
lines(畫線的位置, 顏色,線的關閉 , 點的列表, 線的寬度)
"""
pygame.draw.lines(screen,(0,0,255),True,[(10,10),(200,50),(100,100),(100,150)])
"""
畫矩形
rect(位置,顏色,(x,y,width,height))
"""
# pygame.draw.rect(screen,(255,255,0),(200,200,200,200))
"""
2.畫曲線
arc(Surface, color, Rect, start_angle, stop_angle, width=1)
arc(Surface, color, , 起始角度, 結束角度, width=1)
Rect-->(x,y,width,height)矩形
"""
from math import pi
pygame.draw.arc(screen,(100,100,100),(200,200,100,100),0,pi,2)
"""
3.畫圓
circle(位置,顏色,圓心位置,半徑,width = 0)
"""
pygame.draw.circle(screen,(100,200,100),(300,200),100,0)
"""
畫橢圓
ellipse(Surface,color,Rect,width=0)
"""
pygame.draw.ellipse(screen,(100,150,200),[100,50,50,50],0)
#將內容渲染在屏幕上
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
六、動畫原理
"""author__zhangdong"""
import pygame
if name == 'main':
pygame.init()
screen = pygame.display.set_mode((600,400))
screen.fill((255,255,255))
x = 0
y = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
x += 1
y += 1
screen.fill((255,255,255))
pygame.draw.circle(screen,(255,0,0),(x,y),80)
pygame.display.flip()
作者:舊時初_2e8d
鏈接:http://www.lxweimin.com/p/54f65f8f961b
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。