標簽: python 自制教程
目錄
一:語法元素
1.注釋,變量,空格的使用
注釋
- 單行注釋以#開頭,多行注釋以''開頭和結尾
變量
- 變量前面不需要聲明數據類型,但是必須賦值
- 變量命名可以使用大小寫字母,數字和下划線的組合,但是首字母只能是大小寫字母或者下划線,不能使用空格
- 中文等非字母符號也可以作為名字
空格的使用
- 表示縮進關系的空格不可改變
- 空格不能將一個命名分割
- 除了以上兩條外,程序可以任意使用空格增加程序的可讀性
2.輸入函數,輸出函數
輸入函數
- input()函數從控制台獲取用戶的輸入,使用方法為
變量=input(提示信息)
- 獲得用戶輸入以字符串形式保存在變量中
如val="28C"
,則val[-1]
表示最后一個字符"C"
前兩個字符組成的子串可以用val[0:2]
表示,表示從一個[0,2)的區間
輸出函數
print("文本")
文本里面的%f數據為后面引號后面的值
例如print("the value of a is %f"%a)
3.分支語句,循環語句
分支語句
分支語句通過縮進關系表示分支的所屬關系
if <條件一>:
<表達式一>
elif <條件二>:
<表達式二>
else :
<表達式三>
循環語句
循環語句根據判斷條件或者計數條件確定一段程序的運行次數
例如:
for i in range (10):
<表達式組>
上述表達式組將會運行10次
for循環固定循環次數,不會因為變量改變而改變
注意循環語句中的縮進
while與C一樣,也有break和continue
4.保留字in,同步賦值
保留字in
判斷左側內容是否在右側集合中
例如val[-1] in ['c','C']
如果成立則為true,若不成立則為false
同步復制
同時給多個變量復制,即先運算右側所有表達式,然后同時將表達式結果賦值給左側
如將x和y交換數值x,y=y,x
5.import與def以及turtle庫
- import
import可以引入外部庫 - def 可以定義自己的函數
注意def里面所有縮進都是def里面的函數 - 引用庫函數:
from math import *
或者import math
,但是在這種函數后需要用math.函數()來使用函數
import turtle
def draw(rad,angle,len,neckrad):
for i in range(len):
turtle.circle(rad,angle)//畫圓的半徑與角度
turtle.circle(-rad,angle)
turtle.circle(rad,angle/2)
turtle.fd(rad)//畫直線的長度
turtle.circle(neckrad+1,180)
turtle.fd(rad*2/3)
def main ():
turtle.setup(1300,800,0,0)//啟動窗口的寬與高與左上角的坐標,向下為y軸,右方為x軸
pythonsize=30
turtle.pensize(pythonsize)//運行軌跡的寬度(像素)
turtle.pencolor("blue")//(軌跡顏色)
turtle.seth(-40)//開始運動的方向
draw(40,80,5,pythonsize/2)
main()
turtle 畫五角星
from turtle import Turtle
p=Turtle()
p.speed(3)
p.pensize(5)
p.color("black","yellow")
p.fillcolor("red")
p.begin_fill()
for i in range (5):
p.forward(200)
p.right(144)
p.end_fill()
6.eval函數與repr函數
- 將字符串當成有效Python表達式來求值,並返回計算結果
x = 1
eval('x+1')
eval('x==1')
- repr函數,它能夠將Python的變量和表達式轉換為字符串表示
repr(x==1)
repr(x+1)
二.數據類型
- 1.整數類型(無數值范圍限制)
- 十進制
- 0X,0x開頭表示16進制數
- 0b,0B開頭表示2進制數
- 0o,0O開頭表示8進制數
- 浮點數
浮點數可以用科學計數法,使用e或者E作為冪的符號,1️以10為基數,例如2e-10表示2的-10次方 - 復數類型
z=a+bj,a為實數部分,b為虛數部分,敘述部分用j或者J標識,同時a與b同位浮點類型
例如z=12.3+4.2j
對於復數z,可以用z.real和z.imag獲得實數與虛數部分 - 整數->浮點數->復數
不同數字類型之間存在混合運算,運算結果為最寬類型
三種類型可以相互轉換
函數 :
int(4.5)=4
float(4)=4.0
complex(4)=4+0j
可以通過type(x)
獲得x的類型,適用於所有類型
運算符或函數 | 作用 |
---|---|
x//y | 表示x/y商的整數部分 |
x%y | 表示x/y商的余數部分 |
x**y | 獲得x的y次冪 |
divmod(x,y) | 同時返回求商和余 |
pow(x,y) | x的y次冪 |
- 字符串類型
- 字符串是用雙引號或單引號括起來的一個或多個字符
- 字符串可以保存在變量中,也可以單獨存在
- 如果要輸出引號在前面加一個轉義字符\
- 字符串之間可以進行+與*操作
- len(str)函數能返回str字符串的長度
函數名稱 | 作用 |
---|---|
string.upper() | 將字符串中字母大學 |
string.lower() | 字母變為小寫 |
string.capitalize() | 首字母大寫 |
string.strip() | 去掉兩邊的空格及去掉指定字符 |
string.split() | 按指定字符分割字符串為數組 |
string.isdigit() | 判斷是否是數字類型 |
string.find() | 搜索指定字符串 |
string.replace() | 字符串替換 |
遍歷字符串的每個字符
for <var> in <string>:
-
元組類型
- 元組包含多個元素,元素之間用逗號分開
t=123,456,"hello"
- 元組可以是空的
t=()
- 元組外側可以有括號也可以不加
- 元組包含多個元素,元素之間用逗號分開
-
元組的三個特點
- 元組中元素可以是不同類型 `t=12,32,("hello","world")
- 可以通過索引訪問元組中的元素 例如
t[1]
- 元組定義后不能修改也不能刪除
與字符串相似可以通過索引區間來訪問元組中部分元素如t[1:]
同樣,元組之見可以使用+和*運算符進行運算
- random與math庫
random可以生成隨機數以及隨機生成列表,隨機取數等
math庫存數學函數
python語法
異常處理
tre:
<body>
except <ErrorType1>:
<handler1>
except <ErrorType2>:
<handler2>
else :
<process_else>
finally:
先執行try里面的語句,如果報錯,則執行except里面的異常處理語句
如果沒有異常則繼續處理else里面的語句
無論是否異常繼續運行finally里面的語句
布爾表達式
- and相當於&&
- or相當於|
- not相當於!
函數
def <函數名> (<參數>):
<body>`
- 不需要返回類型,但是能夠return任意類型的參數
- 無返回值返回return None
- 函數可以返回多個值,用逗號隔開
文件操作
- 打開文件
open()
函數
變量=open(磁盤文件名稱,打開方式)
|操作名稱|含義|
|:---😐:---|
| r|只讀,如果文件不存在,則輸出錯誤 |
|w|只寫,如果文件不存在,則創建文件|
|a|附加到文件末尾|
|rb|只讀二進制文件,如果文件不存在,則輸出錯誤|
|wb|只寫二進制文件,如果文件不存在,則自動創建文件|
|ab|附加到二進制文件末尾|
|r+|讀寫|
示例代碼:
infile=open("number.dat","r")
- 文件讀取
|操作名稱|含義|
|:---😐:---|
|read()|返回值為包含整個文件內容的一個字符串|
|readline()|返回值為文件下一行內容的字符串|
|readlines()|返回值為整個文件內容的列表,每行是️以換行符為結尾的一行字符串|
示例代碼
- 輸出文件的文本
def main()
fname = input("Enter filename:")
infile = open(fname,"r")
data=infile.read()
print(data)
main()
- 文件寫入
|操作名稱|含義|
|:---😐:---|
|write()|把含有文本數據或二進制數據塊的字符串寫入文件|
|writelines()|針對列表操作,接受一個字符串列表作為參數,將他們寫入文件,並且行結束符不會被自動加入|
示例代碼
outfile=open("outfile.txt","w")
outfile.writeliens(["hello"," ","world"])
outfile.close()
infile=open("outfile.txt","r")
infile.read()