python基础入门(Peak带你学python)
帶你學python
- Peak帶你學python
- 基礎語法知識
- print函數
- 轉義字符
- 進制轉換
- 保留字和標識符
- 變量
- 數據類型
- 數據類型轉換
- 注釋
- input函數
- 運算符
- 運算符優先級
- 布爾值
- if~else選擇結構
- pass語句
- range()函數
- 循環結構
- while循環
- for-in循環
- break語句
- continue語句
- else語句
- if~else語句
- while ~ else和for ~ else
- 嵌套循環
- 列表
- 列表的創建與刪除
- 列表的查詢操作
- 列表元素的遍歷
- 列表元素的增刪改操作
- 列表元素的排序
- 列表生成式
- 字典
- 字典的創建
- 字典元素的獲取
- 字典的增、刪、改操作
- 字典元素的遍歷
- 字典的特點
- 字典生成式
- 元組
- 元組的創建方式
- 元組的遍歷
- 集合
- 集合的創建方式
- 集合的相關操作
- 集合的數學操作
- 集合生成式
- 列表、字典、元組、集合小結
- 字符串
- 字符串的駐留機制
- 字符串的查找
- 字符串大小寫的轉換
- 字符串內容對齊的方法
- 字符串分割操作
- 判斷字符串操作
- 字符串的替換與合并
- 字符串的比較
- 字符串的切片操作
- 格式化字符串
- 字符串的編碼與解碼(補充)
- 函數
- 函數的創建、調用以及參數傳遞
- 函數的返回值
- 函數定義默認參數
- 函數參數之個數可變的位置參數和關鍵字參數
- 變量的作用域
Peak帶你學python
基礎語法知識
print函數
python里面的輸出函數,可以輸出數字、字符串、以及含有運算符的表達式,可以將內容輸出到顯示器或者文件
#輸出到顯示器 print(500) print(98.5) print('500') print('我會python輸出啦') print('aa','abc') #不換行輸出 print(3+1) #輸出到文件 fp = open('D:/text.txt','a+') #a表示以讀寫的方式打開文件,+表示可以追加不清除原有的 print('我python可以在文件里面寫東西了',file=fp) #注意一下file fp.close()轉義字符
大家應該都知道,前面加一個’‘就好了。例如’\’,例如’\n’換行、’\t’制表符、’\b’退格
ps: r或者R可以讓轉義字符失效,最后一個字符不可以是 ''
進制轉換
- bin:轉換為二進制
- oct:轉換為八進制
- ord:字符轉換為十進制,與char作用相反
- hex:轉換為十六進制
ps:利用input()函數讀入的時候,默認是字符串格式,需要用int格式轉換為十進制數
#int使用情況 n = input() #輸入1234 int(n,10) #輸入1234認為是十進制數轉換為1234 int(n,8) #輸入1234認為是八進制數轉換為668 int(n,16) #輸入1234認為是八進制數轉換為4460 int(n,2) #輸入1111認為是八進制數轉換為15bin(10) #0b1010 oct(10) #0o12 hex(10) #0xa ord('a') #97保留字和標識符
下面的運行可輸出保留字
import keyword print(keyword.klist)標識符的命名規則: 以字母、數字、下滑線組成;不能以數字開頭; 不能使用保留字; 區分大小寫
變量
變量由三部分組成:標識、類型和值。其中標識可以認為就是C語言或者其他語言的地址可以通過id(變量名)函數獲得,類型也就是所謂的整型、浮點型之類的,可以通過type(變量名)來獲得
name = '我愛python' #name就是變量 print(id(name)) #輸出標識 print(type(name)) #輸出類型 print(name) #輸出值數據類型
- 整數類型(int):正整數、0、負整數、二進制整數、八進制整數、十進制整數、十六進制整數都可以。
- 浮點數類型(float):浮點數進行運算的時候可能出現小數位數不確定
- 布爾類型(bool):表示真或者假,True or Talse,可以轉換為整數型 1 和 0
- 字符串類型(str):不可改變的字符序列,類似C語言的const char*
其中,可以用單引號、雙引號、和三引號表示,單引號和雙引號的字符串必須在一行,三引號可以連續分布多行。所以有時也可以用三引號來書寫注釋
數據類型轉換
一般在不同數據類型進行拼接的時候,會用到數據類型轉換。也就是一般用于解決TypeError: can only concatenate str (not "int") to str這種報錯
- str():將其他數據類型轉換為字符串類型
- int():將其他數據類型轉換為整數類型,注意文字類和小數類字符無法轉換,也就是只能是整數的字符串才可以。浮點類型轉換為整數類型,抹零處理
- float():將其他數據類型轉換為浮點數,注意文字類無法轉換為小數,整數轉換為小數時,結尾加上 .0
注釋
python里面只有單行注釋以#號開頭,第一行的注釋可以用來聲明中文編碼格式,比如utf-8,gb2312,gbk之類的。如果非要使用多行注釋的話,可以使用三引號來表示。
input函數
- input函數:是一個輸入函數,其中里面可以寫提示語。
注意返回的類型是str類型,看自己需求進行轉換。
#來一個小demo a = int(input("請輸入第一個整數:")) b = int(input("請輸入第二個整數:")) print("兩個數的和為:",a+b)運算符
- 算術運算符:+(加)、-(減)、*(乘)、/(除)、//(整除)、%(取余)、**(冪運算)
- 賦值運算發:從右向左賦值。
- 支持鏈式賦值:a = b =c
- 支持參數賦值:+=、-=、*=、/=、//=、%=
- 支持系列解包賦值:a,b,c = 1,2,3;a,b = b,a(相當于a與b進行交換)
- 比較運算符:>、<、<=、>=、!=、==都是對值的比較,比較id用is 和 is not
ps:返回值是布爾類型 - 布爾運算符:and、or、not、in、not in
ps: in 和 not in在字符串、列表、字典中較為好用 - 位運算符:&(按位與)、|(按位或)、<<(左移,對于整數*2)、>>(右移,對于整數相當于//2)
4&8 結果為0,因為4對應00000100,8對應00001000。按位與為00000000,所以為0
運算符優先級
算術運算符>位運算符>比較運算符>布爾運算符>賦值運算符
布爾值
可通過內置函數bool()獲得- False:False、數值0、None、空字符串、空列表、空元組、空字典、空集合
- True:其他的都是True
if~else選擇結構
- if 條件表達式:
條件執行體
條件表達式為真則執行條件執行體
#哈哈哈哈,莫名想起武漢三行情書大賽 #螃蟹在剝我的殼,筆記本在寫我。漫天的我落在楓葉上雪花上。而你在想我。 if 1+1!=2:print("你愛我")- if 條件表達式:
???? 條件執行體1
else:
????條件執行體2
條件表達式為真,執行條件執行體1,否則執行條件執行體2
- if 條件表達式:
???? 條件執行體1
elif:
???? 條件執行體2
elif:
???? 條件執行體3
…
elif:
???? 條件執行體N
[else:]
與上面類似,自己琢磨一下吧,小機靈鬼
pass語句
相當于C語言的空語句 ; 或者 匯編語言的 nop。不知道寫什么代碼,可以先用pass代替
range()函數
- 可以生成一個整數序列,返回值是一個迭代器對象,優點是所有的range占用的空間都是相同的
- 三種用法:
- range(stop):[0, stop), 每次加一
- range(start, stop):[start, stop),每次加一
- range(stast, stop, step):[start, stop),每次加step
可以用in 或者 not in 查看數字是否在迭代器里面
循環結構
while循環
- while 條件表達式:
???? 條件執行體(循環體)
表達式為True的時候執行循環體,直到表達式為False結束循環
n = 0 while n < 10:print(n)n+=1for-in循環
- for 自定義的變量 in 可迭代對象:
???? 循環體
自定義變量會依次取出可迭代對象的內容,不需要自定義變量的時候可以將自定義變量替換為下滑線
for item in '啦啦啦啦':print(item)for i in range(9):print(i)for _ in range(3):print("重要的事情說三遍")break語句
- 退出上一級循環
continue語句
- 用于結束當前循環進入下一循環, 一般配合if語句
else語句
if~else語句
這個語句上面有就不詳細說明了while ~ else和for ~ else
如果循環體執行完畢沒有碰到break則執行。和C語言中swith~case語句中的,default語句有點像。 a = 0 while a < 3:pwd = input("請輸入密碼:")if pwd == '8888':print("密碼輸入正確")breakelse:print("密碼輸入錯誤")a += 1 else:print("三次輸入錯誤") for i in range(3):pwd = input("請輸入密碼:")if pwd == '8888':print("密碼輸入正確")breakelse:print("密碼輸入錯誤") else:print("三次輸入錯誤")嵌套循環
- 99乘法表
列表
相當于其他類型的數組,不過比數組更加方便可以存儲不同的類型。 特點:1. 元素按照順序有序排列 2. 索引映射唯一的數據 3. 可以存儲重復數據4. 任意數據類型混存 5. 根據需要動態分配內存和回收內存列表的創建與刪除
- 創建
- 使用中括號[]lis = [123,'11',12.3]
- 使用內置函數list()lis = list([123,'11',12.3])
列表的查詢操作
- 獲取指定元素的索引通過 index() 來實現。但是只能獲取第一個,不存在則會報錯。lis = list(['11','11',12.3]) print(lis.index('11')) #也可以指定索引范圍查找 print(lis.index('11', 1, 3)) #索引范圍[1, 3)
- 獲取列表的單個元素,通過指定的索引獲得
lis = list(['11','22',12.3]) print(lis[0]) print(lis[1]) print(lis[2]) print(lis[-1]) print(lis[-2]) print(lis[-3]) - 獲取多個元素,通過切片操作
lst = [10, 20 ,30, 40, 50, 60, 70, 80] print(lst[1:6:1]) print(lst[1:6:2]) print(lst[0:6:1]) print(lst[0:6:2]) print(lst[-1:1:-1]) print(lst[-1:-7:-1]) - 判斷指定元素在列表中是否存在
元素 in 列表名 或者 元素 not in 列表名
列表元素的遍歷
for 迭代變量 in 列表名:對應的操作列表元素的增刪改操作
- 增:
- append()在列表的末尾添加一個元素
- extend()在列表的末尾至少添加一個元素
- insert()在列表的任意位置添加一個元素
- 切片
- 刪
- remove()刪除指定元素,有重復元素刪除第一個。沒有則報錯。
- pop()刪除指定索引的元素,索引超出范圍則報錯(默認是最后一個)
- clear()清空列表
- del()刪除列表
- 改:
- 利用索引修改
- 利用切片修改
列表元素的排序
- sort()方法:默認升序,利用reverse = True可以實現逆序
- sorted()方法:默認升序,利用reverse = True可以實現逆序,不改變原列表,產生新的列表對象
列表生成式
lst = [i for i in range(10)] print(lst)字典
- python的內置數據結構之一,是一個可變序列
- 以鍵值對的方式儲存數據,是一個無序的不可變序列
- 利用hash散列表的方式來儲存
字典的創建
-
常用的創建方式大括號
-
使用內置函數dict()
scores = {'張三': 100, '李四':20,'王五':60} print(scores) print(type(scores)) student=dict(name='張三',age = 100) print(student) print(type(student))
字典元素的獲取
區別是,[]獲取如果沒有會報錯,get()則會返回None
字典的增、刪、改操作
scores = {'張三': 100, '李四':20,'王五':60} print('張三' in scores) print('陳六' in scores) del scores['張三'] print(scores) scores.clear() print(scores) scores['陳六'] = 90 print(scores) scores['陳六'] = 100 print(scores)字典元素的遍歷
scores = {'張三': 100, '李四':20,'王五':60} for item in scores:print(item, scores.get(item))字典的特點
字典生成式
- 內置函數zip()items = ['fruits', 'books', 'things', 'others'] prices = [11,22,33,44] dict = {items:prices for items, prices in zip(items,prices)} print(dict)
元組
- python的內置數據結構之一,是一個不可變序列
- 不可變序列沒有增刪改操作,例如:元組、字符串??勺冃蛄锌梢詫π蛄袌绦性鰟h改操作,但是對象地址不改變,例如:列表、字典
元組的創建方式
- 小括號直接創建,小括號可以省略
- 用內置函數tuple管理t = ('張三','李四','王五') print(t) print(type(t)) t1 = tuple(('陳六','趙七')) print(t1) print(type(t1))
元組的遍歷
- 利用for in循環來遍歷,因為元組也是一種迭代對象
集合
- 相當于沒有 value 的字典,同樣是使用hash函數散列表的儲存方式,用空間換時間的思想
集合的創建方式
- {}
- 使用內置函數set()
集合的相關操作
-
集合元素的判斷操作
- in or not in
-
集合元素的新增操作
- 調用add()方法,一次添加一個元素
- 調用update()方法至少添加一個元素
-
集合元素的刪除
- 調用remove()方法,一次刪除一個指定元素。沒有則報錯
- 調用discard()方法,一次刪除一個指定元素,不會報錯
- 調用pop()方法,刪除任意一個元素
- 調用clear()方法,清空集合
-
集合間的關系
集合的數學操作
-
交集
s1 = {10,20,30,40} s2 = {30,20,90,80} print(s1.intersection(s2)) print(s1 & s2) -
并集
s1 = {10,20,30,40} s2 = {30,20,90,80} print(s1.union(s2)) print(s1 | s2) -
差集
s1 = {10,20,30,40} s2 = {30,20,90,80} print(s1.difference(s2)) print(s1 - s2) -
對稱差集
s1 = {10,20,30,40} s2 = {30,20,90,80} print(s1.symmetric_difference(s2)) print((s1 - s2)|(s2-s1)) print(s1^s2)
集合生成式
列表、字典、元組、集合小結
print({i *i for i in range(1,9)})字符串
字符串的駐留機制
- 字符串是不可變序列
pycharm對字符串有優化,相同的字符串基本都是一個對象
字符串的查找
- index():查找子串substr第一次出現的位置,如果子串不存在則,拋出異常valueError
- rindex():查找子串substr最后一次出現的位置,如果子串不存在則,拋出異常valueError
- find():查找子串substr第一次出現的位置,如果子串不存在則,返回-1
- rfind:查找子串substr最后一次出現的位置,如果子串不存在則,返回-1
ps:推薦使用后兩種
字符串大小寫的轉換
-
upper():將所有字符轉換為大寫
-
lower():將所有字符轉換為小寫
-
swapcase():將所有字符大小寫互換,即大寫字符改為小寫,小寫字符改為大寫字符
-
capitalize():將第一個字符轉換為大寫,其余字符轉換為小寫
-
title():把每個單詞的第一個字符轉換為大寫,其余轉換為小寫
str = 'Hello WoRld' print(str.upper()) print(str.lower()) print(str.swapcase()) print(str.capitalize()) print(str.title())
字符串內容對齊的方法
str = 'Hello World' print(str.center(30,'-')) print(str.ljust(30,'*')) print(str.rjust(30,'#')) print(str.zfill(30)) print('-90'.zfill(10))字符串分割操作
str = 'Hello World' print(str.split()) print(str.split(sep='l')) print(str.split('l')) print(str.split('l',1)) print(str.split(sep='l',maxsplit=1))print(str.rsplit()) print(str.rsplit(sep='l')) print(str.rsplit('l')) print(str.rsplit('l',1)) print(str.rsplit(sep='l',maxsplit=1))判斷字符串操作
字符串的替換與合并
str = 'Hello a a a aaaa' print(str.replace('a','b')) print(str.replace('a','b', 3)) lst = ['hello','world','lallall'] #元組集合同樣可以 print(''.join(lst)) print('|'.join(lst))字符串的比較
print('apple'>'app') print('java'>'python') print('java'>'Python')ps:注意區分 == 和 is 前者比較的是值是否相等, is比較的是id是否相等,也就是內存地址是否想等
字符串的切片操作
s = 'hello,peak.' s1 = s[:5] s2 = s[6:] print(s,s1,s2)格式化字符串
name = '妞妞' age = 18 a = '%s 永遠 %d 歲'% (name, age) print(a) b = '{0} 永遠 {1} 歲'.format(name,age) print(b) c = '{Name} 永遠 {Age} 歲'.format(Name = name,Age = age) print(c)# ptyhon3 才可以使用的 f-string方法 d = f'{name} 永遠 {age} 歲' print(d)注意:%的用法也可以設置寬度,正數左對齊,負數右對齊,對浮點數小數點后面表示保留幾位小數,{也可以不過要使用:}
print('你占多寬啊') print('01234567890123456789') a = '|%3d|%-7.2f|' % (12,12.3456) print(a)b = '|{0:3}|{1:7.3f}|'.format(12,3.1415926) print(b)字符串的編碼與解碼(補充)
數據在進行傳輸的時候會進行編碼轉換為二進制進行傳輸,然后接受到后進行解碼,不同的編碼方式與解碼方式是不同的。可以通過下列的encode和decode進行編碼和解碼
s = '英雄不問出處' print(s.encode(encoding="GB2312")) b = s.encode(encoding="GB2312") print(b.decode(encoding="gb2312"))函數
簡化編程過程,實現代碼復用,隱藏實現的細節,提高可維護性
函數的創建、調用以及參數傳遞
函數的創建格式一般如下:
def 函數名([輸入參數]):函數體;[return xxx;]首先進行函數的定義,當到函數執行的時候會將對應的參數傳入,也就是下面的第一次 把 1 賦值給 a,2 賦值給 b; 第二次將 ‘11’ 賦值給 a,把 ‘22’ 賦值給 b。然后跳轉到函數進行執行,return 是返回的結果。其中a , b我們稱為形式參數, 11、22,‘11’、'22’稱為實際參數可以多次調用多次執行。
def calc(a,b): #函數定義的地方c = a+b;return cresult = calc(1,2) #函數第一次執行的地方 print(result)str = calc('11','22') #函數第二次執行的地方 a='11', b='22' print(str)str1 = calc(b='11', a='22') #關鍵字傳值,按照關鍵字對應, b='11', a='22' print(str1)python的函數調用需要注意的是如果實際參數的可變對象則會改變實際參數,如果為不可變對象則不會改變實際參數。
函數的返回值
當返回值為多個時,返回的為元組
def func(num):odd=[] #存奇數even=[] #存偶數for i in num:if i%2:odd.append(i)else:even.append(i)return odd,even print(func([10,31,29,43,55,12,89,88,77]))函數定義默認參數
- 函數定義時,給形參設置默認值,只有與默認值不符合的時候才需要傳遞實參
函數參數之個數可變的位置參數和關鍵字參數
主要用于不知道需要傳遞幾個參數時- 個數可變的位置參數,加上一個 * 最終形參會形成一個元組
- 定義函數時,無法事先傳遞的關鍵字實參的個數使用可變關鍵字參數, 參數前加上 **
PS:在一個函數的定義參數的時候只能有一個可變的參數(位置參數或者關鍵字參數)
- 函數定義及調用的總結
變量的作用域
總結
以上是生活随笔為你收集整理的python基础入门(Peak带你学python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 崩坏星穹铁道太平州还是那个太平州成就怎么
- 下一篇: 党在心中(turtle画图)