本文將簡單闡述一些基本的python知識點,大多是本人在學習過程中的心得體會。簡單常用的編程概念和思想將不再描述。若有理解錯誤,還望指正。
一、python運行,調試
python和相關軟件可以在官網下載。本文采用的版本是:Python 3.7.0 + PyCharm 2019.2
在這里推薦Notepad++文本編輯器可用於編寫程序,轉換編碼,很多txt文件如若使用windows自帶的文本編輯器打開會出現一些錯誤。
python的運行有兩種方式:命令行模式+python交互模式。
①命令行模式:win+r快捷鍵,輸入cmd,可以進入電腦命令行模式---->輸入相應文件名進行執行(可以在notepad中編寫好再執行.py文件)
C:\> python hello.py
②python交互模式:win+r快捷鍵,輸入cmd,可以進入電腦命令行模式---->輸入python回車,即可進行編輯
>>> ... ... (這時是直接進行程序編寫)
輸入exit()回車即可退出
當然利用PyCharm也可以進行編寫,這就如同我們在VS中編寫C項目一樣。大家根據實際情況進行使用。 可以打斷點,一 一進行調試。
快捷鍵:查找ctrl+F,替換ctrl+R
二、基本語法學習
(1)命名規則:
命名有大小寫區分,由大小寫字母、數字、下划線_ 混合組成。數字不可開頭,其余可。
由兩個及以上單詞組成時:
①first_name 全小寫,中間用下划線連接
②FirstName/firstName 各單詞首字母大寫/除首字母外,各單詞首字母大寫
(2)基本規則:
- 縮進:python中的縮進是tab或者4個空格,同一個py文件中兩者不能混用。PyCharm中選中需要調整縮進的行,按tab可向右縮進,shift+tab可以向左縮進
- 注釋:
- 行代碼注釋,在該行代碼后打空格再使用#即可 標准的使用方法是代碼后兩個空格,#號后一個空格再進行編寫注釋。
例如:
print('這是一個例句') # 符號前兩個空格,符號后一個空格
2.段代碼注釋使用/* ... ... */
- 一般計數從0開始。
(3)IF語句的學習:
if 語句的格式是:
if 條件:
滿足條件執行語句①
執行完①或者沒有滿足條件時執行語句②
或者
if 條件:
滿足條件執行語句①
else:
不滿足條件執行語句②
或者
if 條件①:
滿足條件①執行語句①
elif 條件②:
滿足條件②執行語句②
... ...
else:
都不滿足條件則執行語句
一個需要注意的點:
假如兩個條件:if A==0 or 1:
是錯誤的!應該寫成
if A==0 or A==1:
否則理解成兩個條件“A==0”或者“1”
舉例一:
name = input("請輸入您的姓名:") #input函數的使用,先輸出字符串(可沒有),再將用戶輸入的數據存入name字符串
age = input("請輸入您的年齡:")
age = int(age) #因為input得到的是str,所以需要轉換為int
if age >= 18: #if語句的使用,冒號非常重要,不可遺漏 比較運算符:== != /= //整除 %取余... 邏輯運算:not、and、or
print("%s,您%d歲了,已經成年了!" % (name,age)) #注意print的使用方法,%d、%s等都是其他語言里常用的占位符,但此處不用逗號分隔,而是使用%
else:
print("您還未成年!")
輸出結果:
請輸入您的姓名:**
請輸入您的年齡:20
**,您20歲了,已經成年了!
if 后的條件如果滿足,則執行其冒號后的代碼塊。此代碼塊是指此冒號后有縮進的那一部分。否則執行else / elseif / 沒有縮進的代碼塊。
如果需要嵌套if語句,只有縮進變化,其余不變,與其他語言編碼相似。
Tips: 如果條件很長影響閱讀可以換行操作
例如:
if ((player_int == 1 and computer_int == 2)
or(player_int == 3 and computer_int == 1)
or(player_int == 2 and computer_int == 3)): #條件很長,為了便於觀看添加括號進行換行,其中換行后需要多添加一個tab,為了區分代碼塊內容
(4)循環的學習:
①while循環:
while 條件A: #滿足A則循環執行B
執行代碼塊B
tips:可以添加斷點debug(shift+f9),單步調試f8進行學習。Pycharm運行快捷鍵:shift+f10 運行當前py :shift+ctrl+f10
一般計數器從0開始,條件中使用</>;從1開始,使用>= / <=
需要借助計數器。
②break和continue的使用:(只針對當前循環有用)
break:某一條件滿足時退出循環,不再執行后續重復的代碼塊
continue:某一條件滿足時,不再執行后續重復的代碼塊
③for循環:
迭代遍歷,按照順序進行數據提取。對每一個元素,執行相同的操作
迭代:順序的從列表中依次獲取數據
可以遍歷所有非數字型變量,如元組、列表、字符串、字典
舉例二:(涉及到后文的list知識)
name_list=['abc','def','ghi']
for my_name in name_list:
print(my_name)
有想要實現循環數字:
for i in range(100): # i是從0到100的數字,包含0和100,想要從1:range(1,100)即可!
pass
假如:
想要從1:range(1,100)即可,但是如此不行:
j = 1
for j in range(100): # 這樣實際上j是個新的變量,還是從0開始的
pass
(5)函數的使用:
①隨機數生成:
import random
random.randint(a,b) #可以得到[a,b]間的隨機整數,包括ab
②print函數的使用:
print("%s,您%d歲了,已經成年了!" % (name,age)) #注意print的使用方法,%d、%s等都是其他語言里常用的占位符,但此處不用逗號分隔,而是使用%
print函數默認輸出后進行換行
print('*',end='') #借助end可以將默認的換行符替換為自己所需要的符號或是空
若需要換行 :print('')
轉義字符 \ 的使用:
\t 制表符,用於文本垂直對齊 \n換行符 \" 轉義了“,可以輸出”
③函數的使用:
函數將具有獨立功能的代碼塊進行封裝,讓開發人員更方便的進行使用
定義函數:
def 函數名():
函數內容
執行程序時,只有主動調用函數才會執行該定義函數的代碼塊,但是定義函數必須在調用之前。
程序是順序執行的,當讀到def就清楚了有這樣的一個定義,但實際內容並未執行。
可以用return進行函數返回值的輸出,return關鍵字后的函數內容不會被執行
函數注釋:
def 函數名():
"""注釋"""
函數內容
開發過程想要查看就將光標放在函數名上,然后ctrl+Q即可查看注釋
形參和實參:
形參:定義函數時,小括號中的參數,用於接收參數,在函數內部作為變量使用
實參:使用函數時,小括號中的參數,用於將數據傳入函數內部
④模塊:
模塊就好比一個工具包,每一個py文件都是一個模塊,其中的變量和函數都是可以給外界使用(借助import關鍵字
注意:模塊名就是標識符名,所以也應該符合命名規則
import 包名
包名.變量/函數 即可調用
新項目包中從文件管理器中打開有__pycache__文件夾,其中保存了.pyc文件,代表的是已經被編譯過的文件,直接執行可以加速執行速度
⑤數據類型:列表list、字典dict、元組tuple
列表
即為其他語言常說的數組,用存儲一串數據,[ ]表示,兩項之間用‘ ,’分隔,序號從0開始
【有序】數據集合。本文的list是用於代表列表的,實際上是列表名。
盡管list可以存儲不同數據類型的數據,但是大多數情況,都是存儲相同的數據類型
取值: list[ index ] 即可取到序號為 index 的數據data
取索引: list.index(data)
類別 | 函數使用 | 解釋說明 |
增加 | list.insert(index,data) | 指定位置插入數據 |
list.append(data) | 末尾添加數據 | |
list.extend(list2) | 將list2的數據添加到list后 | |
修改 | list[index]=data | 修改指定索引數據 |
刪除 | del list[index] | 刪除指定索引數據 |
list.remove[data] | 刪除第一個出現的data數據 | |
list.pop | 刪除末尾數據 | |
list.pop(index) | 刪除指定索引數據 | |
list.clear | 清除列表 | |
統計 | len(list) | 統計列表長度 |
list.count(data) | 計算data在列表中出現次數 | |
排序 | list.sort() | 升序排序 |
list.sort(reverse=true) | 降序排序 | |
list.reverse() | 逆序、反轉 |
Tips: 可以在命令行模式,輸入"list名."再按tab,可以得到能使用的方法名,在pycharm中光標放到方法名再按ctrl可以看出需填參數
關鍵字、函數和方法:
關鍵字使用時不需要小括號,例如前文的del
import keyword
print(keyword.kwlist) #可以查看python所提供的所有33個關鍵字
函數封裝了一些獨立功能,可以直接調用,使用時需要小括號。函數名需要記住。
方法和函數類似,也是封裝了獨立功能,但是方法需要通過對象來調用,是要對這個對象進行的操作。
調用方法: 對象.方法名() #方法名不用記住
元組
元組與列表類似,用()表示,但是元組的元素不能修改,定義完成后就不能修改。兩項之間用‘ ,’分隔,序號從0開始
元組會用來存儲不同的數據類型,因而對元組進行迭代循環的需求就不是很多
空元組:empty_tuple = ()
只含一個元素的元組: one_tuple = (1,) #必須添加一個逗號,若無的話就是int型
取值: tuple[index]
取索引: tuple.index(data)
數據在元組中出現的次數: tuple.count(data)
元組元素個數: len(tuple)
元組應用場景:①格式化字符串中()即是一個元組,可以不用print直接用%連接字符串和元組②用於保存函數的參數和返回值③保護不能修改的列表
元組和列表的轉換: list(元組) / tuple(列表)
字典
【無序】的數據集合。本文的dict是用於代表字典的,實際上是字典名。
字典用{}表示,每個數據項是一個鍵值對,用逗號分隔。鍵值對的格式是key:value。為了便於觀看,最好可以一行放置一對鍵值對。
取值:dict[ key ]
增加/修改 : dict[ key ] = value2 #如果key不存在則新增項key:value2;如果存在則將原來的value值改為value2
刪除: dict.pop(key) 即可刪除對應鍵值對
取值 | dict[key] dict.get(key) |
取出字典中key對應的value值 |
增加/修改 | dict[key]=value dict.setdefault(key,value) |
若key存在則是修改鍵值,若不存在則是增加項 |
刪除項 | dict.pop(key) | 刪除key對應的鍵值對 |
統計鍵值對數 | len(dict) | 統計鍵值項數 |
合並字典 | dict.update(dict2) | 合並兩個字典,若有相同key,覆蓋dict原有的項 |
清空字典 | dict.clear() | 清空所有鍵值對 |
查看key值 | dict.keys() | 查看key值列表,value同理 |
字典在迭代循環時,for item in dict: 中的item指的是鍵值對中的key
字典和列表的結合:list=[dict1,dict2]
字符串
“”或‘’定義。一般其他語言都用“”定義。若內容含有“”可以采用‘’;若內容含有‘’可以采用“”,也可以采用轉義字符
可以利用索引取字符串中的某一字符,索引從0開始。迭代循環時,循環的項是字符串中的各個字符
len(str)查看str長度、str.count(lstr)統計子字符串出現次數、str.index(lstr)返回lstr在str中所處的位置索引
python為字符串提供了很多方法:①判斷類型。例如是否只有數字,是否含有大小寫等。②查找和替換。③大小寫替換。④文本對齊。⑤去除空白字符。⑥字符串拆分和連接。
這些方法不再描述,使用時可以在命令行模式輸入str.再按tab鍵,根據方法名進行利用即可。