Python基礎語法—8小時入門版


# Author By Mikigo
# Time 2021/9/30

一、Python基礎

(一)輸入輸出

1. print

(1)print("hello world") 括號表示調用函數print,括號內的字符串用引號引起來。

(2)print("hello","world","mikigo") 可接受多個參數。

(3)print(name)不加引號表示調用變量。

(4)print(100+200) 不加引號,表示直接運算。

2. input

(1)input() 輸入,光標會等待鍵盤輸入。

(2)input("請輸入內容") 括號內建議輸入提示信息。

(3)input輸入的值都會被當成字符串,包括數字。

(二)數據類型

1. 整數 int 沒有小數點。

2. 浮點數 float :有小數點。

3. 布爾值 bool :True 或 False 。注意首字母大寫。

4. 空值 None :空值,但和0有區別。

5. type() 查看數據類型(isinstance)。

(三)變量、表達式

1. 變量賦值

(1)name="mikigo" 表示將mikigo這個字符串賦值給變量name,注意要加引號,不加引號會被認為是一個變量

(2)a,b,c=7,8,9 多元賦值,表示將值一一對應的復制到等號前面的變量,但位置的個數一定要一致。

(3)數據類型的轉換

    - str(age) 表示將變量age轉換成字符型

    - int(1.5)表示將float轉換成int(取整為1)

    - float(6) 表示將int轉換成float

2. 表達式

(1)+ - * /

(2)% 表示取余數

(3)// 表示取商數

(4)** 表示次冪 ,比如10**5 表示10的5次冪

(四)字符串string

1.格式化字符串

(1)%d(data) 表示數字站位

(2)%s(string) 表示對字符串站位

(3)%r 任何類型都可以接收,但字符串最終打印出來有引號。

(4)格式:print("%s = %d" % (age,19))

(5)"mikigo{}".format(("good",))

(6)f"mikigo{good}"

2.字符串操作

(1)字符串相加 比如:"mi"+ "ki" >miki

(2)* 比如:2*"mi"> mimi

(3)[ ] 表示通過索引截取字符,第1個字符索引是0

(4)[ : ] 表示截取字符串 比如:[2:4]表示從索引2開始,截取到索引3(不包含4)

(5)in 表示in后面字符串中是否包含in前面的字符,比如 "i" in "miki" >>True

(6)not in 用法與in類似但是取反

(7)r/R 表示所有字符都按照字面意思來使用。比如:print(r"hello\nmikigo") 換行字符\n不起作用,直接輸入引號內的字符串。

3.字符串的常見函數方法

(1)len(str) 返回字符串的長度

(2)count計數

- "mikigo".count("mi") 直接跟字符或字符串,則返回字符出現的次數

- "mikigo".count("i",2,10) 表示在索引2到10之間(不包含10),返回字符出現的次數

(3)startswith或endswith 以什么開始或以什么結束

- "mikigo".startswith("m") 表示判斷是否以字符m開始,>true

- "mikigo".endswith("m") 表示判斷是否以字符m結束,>False

(4)find 查找字符或字符串,返回索引位置,如果找不到會返回-1

- "mikigo".find("i") 表示找出字符i在字符串中第一次出現的索引位置,>1

- "mikigo".rfind("i") 表示從右開始找出字符i在字符串中第一次出現的索引位置,>3

(5)index 用法同find,區別在於,找不到時會報錯

(6)strip 刪除或截掉

- " mikigo ".strip() 刪除前后的空格

- " mikigo ".rstrip("o") 刪除右邊的字符o

- " mikigo ".lstrip("m") 刪除左邊的字符m

(7)replace 替換

- "mikigo".replace("i","oo") 表示將字符串中的所有字符i替換稱字符串oo

- "mikigo".replace("i","oo",1) 表示將字符串中的字符i替換為oo,只替換一次

(8)join 加入:"miki".join("ab") >> "amikib" 每個字符拆開,加入某個字符或字符串。

(9)split 以分隔符截取

- "mikigo".split("i") 表示以字符i作為分隔符,將字符串進行分隔。

- "mikigo".split("i",1) 表示以字符i作為分隔符,以第1個i作為字符串的分隔符 進行分隔。

- "mikigo\nhello".splitlines() 或  "mikigo\nhello".splitlines(keepends=False) 表示按行("\r","\n","\r\n")分隔(不包含換行符)。

- "mikigo\nhello".splitlines(keepends=True) 表示以\n換行,且包含換行符。

- 擴展: 多種方式分割字符串  re.split('a|b', 'fdasfweqgasfewaq')

(五)列表(list)

1.list基本操作

(1)列表(list)用[ ]表示,是有序,可變,可指定位置取值的。

(2)列表里面的元素,可以是任意數據類型,包括列表、None、bool

(3)同一列表中可存放不同的數據類型

2.切片

(1)lst[index ]取單個元素,直接跟索引。比如lst[2],表示取索引2的元素

(2)lst[0:2] 取一個區間。表示取索引0到1的元素

(3)lst[0:5:2] 表示按步長2去取索引0到4之間的元素。

(4)lst[-1] 表示取最后一個

(5)lst[::-1] 表示將一個列表反向排序

3.list常見的函數和方法

(1)函數

1)len(list) 列表的長度,即列表中元素的個數

2)max(list) 相同的數據類型取最大值。

(2)方法

  1)list.append(obj) 在列表末尾添加新的對象。list.append("ab"),表示在末尾加入字符串"ab",但append一次只能增加一個元素。

  2)list.count(obj) 統計某個元素在列表中出現的次數。

  3)list.extend(seq) 在末尾追加另一個序列。追加的是一個列表,不能是單個元素。比如list.extend([123])

  4)list.index(obj) 找出某個元素的第一個索引位置。

  5)list.insert(index,obj) 將對象插入到列表(位置,元素)

  6)list.pop(index) 刪除某個位置的元素(默認刪除最后一個)。比如list.pop(1)表示刪除索引1的元素,且返回元素的值。

  7)list.remove(obj) 刪除列表中的某個元素的第一個,修改列表本身。

  8)list.reverse() 反向排序

  9)list.sort() 重新排序

  10)list.clear() 清空列表

  11)list.copy() 復制列表

(六)元組(tuple)

1.定義:以小括號括起來的有序列表,但不能修改。

2.eg. a=(2,3,4,5)

(七)字典(dict)

1.定義:字典是用大括號括起來,由鍵值對(key:value)組成的,且是無序的。

2.key是唯一的,一般賦值為string,value可以是任意數據類型

3.常用操作

(1)dt["key"] 根據鍵讀取值

(2)dt["old_key"]="new_value" 根據鍵修改值

(3)dt["new_key"]="new_value" 新增鍵值對

(4)len(dt) 返回元素的量(鍵值對)

4.dict常用方法

(1)key in dict 判斷鍵是否在字典中

(2)dict.items() 返回列表,列表由元組組成,每個元組由一個鍵值對將鍵和值拆分為兩個字符串組成。

(3)dict.keys() 將所有的鍵組成一個列表。

(4)dict.values() 將所有的值組成一個列表。

(5)dict1.update(dict2) 將字典2中的鍵值對添加到字典1中

(6)dict.get(key,default=None) 返回指定鍵的值,如果值不存在,返回default值。比如:dict.get("name","peter") 如果字典中有name這個鍵,則直接返回其對應的值,如果沒有這個鍵,則返回"peter"

(7)dict.setdefault(key,default=None) 和get一樣會返回指定鍵的值,但若鍵不在字典中,會添加成為新的鍵值對。比如:dict.setdefault("name","peter"),如果字典中有name這個鍵,則返回其對應的值,如果沒有,則會將定義的值,添加到字典中。

(8)dict.pop(key,default=None) 刪除鍵對應的值,key不存在返回default值。

(9)dict.copy() 淺復制

(10)dict.clear() 清除所有元素

二、過程控制

(一)條件語句

if 條件判斷:(縮進和冒號)
	print("字符串")
else:
	print("字符串")

2.else 可以不要,語法上沒有問題

3.運算符

1)< , <= , > , >= , == , !=

2)and , or , not , in , not in, is

(二)循環語句

1.while

while 判斷條件:
  	語句
else :
 	 語句
 ②break 終止循環語句

 ③continue 結束本次循環,繼續進行下一輪循環。

2.for語句(遍歷序列的元素)

for i in [1,2,3,4]:
	print(i)
  • in 后面可以跟元組、列表、字符串,但跟字典時只能取到字典中的鍵(key)。

  • range(函數)

    • range(3) 表示從索引0,取到索引2(開區間)
    • range(1,4) 表示從索引1,取到索引3
    • range(1,10,2) 表示從索引1,取到索引10,步長為2

三、函數

(一)定義

函數是可重復使用的,具有一定功能的代碼段。

1)def 函數名(參數1,參數2,····)

def add(a,b):
 c = a + b
 print(c)

(二)返回值

調用函數后,將執行結果返回給調用者。

def add(a,b):
   c = a + b
   return c

>>x=add(1,2) #返回一個c的值賦給x,如果返回值有多個,而變量只有1個,則會生成一個元組。也可以用多個變量對應多個返回值,即多元賦值。

(三)參數

1、位置參數(形參)

def func(name,age):
    print(name,age)

位置參數時根據位置順序傳入函數,調用函數時必須與定義時的參數數量一致。

2、默認參數

  • def func(name,age=18): print("a未被定義") # 參數在定義的時候就賦值的

  • 默認參數在調用的時候如果不傳入,則會使用默認參數,如果給傳遞了參數,則值會被覆蓋。

3、可變參數

def func(*args):
   sum = 0
   for n in args:
   	 sum = sum +n
   	 return sum

>>func(1,2,3,···) #傳入的參數數量可變,會自動組裝稱一個元組,如果傳入0個參數,結果時返回一個空元組。

  • 如果傳入的參數是一個元組,調用的時候在函數括號內加*號(參數解構)

    tp=(1,2,3,4)

    resule = add(*tp)

4、關鍵字參數(鍵和值)

def func(**kwargs):
    print(kwargs)

>>func(name="peter") # 結果是打印一個字典{"name":"peter"}

  • 如果傳入的參數是一個字典,調用的時候在函數括號內加**

    >>dct = {"eat1":"酸辣粉","eat2":"螺獅粉"}

    >>func(**dct)

5、組合參數

順序為位置參數,可變參數,默認參數,關鍵字參數

def func(name,age,*args,gender=’男’,**kwargs)

四、類(class)

(一)類的實例

1.類的實例是對象,一個實例包含屬性(有什么)和方法(能做什么)。

2.類的聲明:class 類名(): #類名單詞首字母大寫,如果是多個單詞,單詞與單詞之間不空格,直接挨着寫,但每個單詞首字母需要大寫。

3.定義類的屬性和方法

class Person():

	def __init__ (self,name,age):  # __init__是固定格式,`self`也是固定格式。
		self.name = name
		self.age = age  #定義了兩個屬性。
	def run(self,food):
		print("%s都%d歲了,天天吃%s" % (self.name,self.age,food))  #定義了一個方法。(外部變量不加self)

(2)方法調方法或方法調屬性等,內部調用都要加self。 ②

(3)調用外部變量時,不加self。

(4)調用

① 實例化:x = Person("peter",18)

② print(x.name) 調用類的屬性

③ print(x.run("肉"))

(二)繼承

1.子類繼承父類的屬性和方法

class Student(Person):  #繼承時括號內直接寫父類的類名
		pass #完全繼承父類的屬性和方法。
class Student(Person):

	def __init__(self,name,age,cno)
		Person.__init__(self,name,age)  
		self.cno = cno #在父類的基礎上新增屬性,需要先將父類指定進來。否則新增屬性會將父類的屬性覆蓋。
	def run(self):
		r = Person.run(self)
		return r  # 在父類的基礎上新增方法,需要先指定父類的方法。

方法重新定義后,調用的時候,默認先去調用子類的方法,然后再去調用父類的方法。

(三)訪問限制

1.訪問限制可以使,類內部的屬性和方法,不能外部隨便訪問。用法是在屬性或方法前面加雙下划線,表示私有屬性。

2.訪問限制,不能被外部隨便訪問,但可以被內部調用,私有屬性可以用方法調用,私有方法,可以定義其他方法調用。

class Person():
	def  __init__(self,name):
		self.__name = name
	def  __eat(self,food):
		return "%s愛上吃%s"% (self.__name,food)

(四)編碼規范

1.縮進,4個空格的縮進,空格和tab不能混用(tab僅在編輯器中可使用)。

2.類名的單詞以大寫字母開頭。

3.函數和類的屬性命名以小寫,用下划線連接

4.所有的命名都應采用有意義的英文單詞,多單詞由下划線連接。

五、模塊

(一)引入模塊

(1)import 后面直接跟模塊名或類或函數. eg1. import time

(2)from 路徑 import 類或函數 #路徑最好用絕對路徑 eg2. from model.A import add

(二)安裝三方庫

(1)sudo pip3 install pymysql(三方庫名) #在命令行直接輸入即可(命令行安裝時注意)。

(2)在pycharm里面,點擊file,選擇setting,選擇Project,選擇Project Interpreter,在右上角點+號,輸入庫名即可安裝。

(3)如果是需要下載的三方庫,下載后查看文件包里面的readme文件,根據描述進行安裝。

六、異常處理

(一)try語句

(1)try ... except...except 表示當程序運行錯誤后,被except捕捉到,返回一個可定義的信息,且不會影響后續語句的執行。每個except后面跟不同的返回信息。

try:
    print(a)
    10/0
except NameError:
    print("a未被定義")
except ....

(2)try ...except...finally 同(1)一樣,但finally后的語句,無論是否發生異常,都會執行。

(3)try...except...else 同(1)一樣,但else后的語句,是在沒有發生異常的情況才會執行。

(二)拋出異常

①>> raise NameError("這是一個名稱錯誤")

(三)常見的異常分類

① AssertionError assert(斷言)語句失敗。

② AttributeError 試圖訪問一個對象沒有的屬性,比如foo.x,但是foo沒有x這個屬性。

③ IOError 輸入/輸出異常,基本上是無法打開文件。

④ ImportError 無法引入模塊或者包,基本上是路徑問題。

⑤ IndentationError 語法錯誤,代碼沒有正確對齊。

⑥ IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]。

⑦ KeyError 試圖訪問字典里不存在的鍵。

⑧ Kerboardinterrupt Ctrl+C被按下,主要針對無限循環。

⑨ NameError 使用一個還未被賦值予對象的變量。

⑩ SyntaxError 代碼非法,代碼不能解釋。

⑪ TypeError 傳入對象類型與要求的不符。

⑫ UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由於另一個同名的全局變量,導致你以為正在訪問它。

⑬ ValueError 傳入一個調用者不期望的值,即使值的類型是正確的。

⑭ FileNotFoundError 試圖打開一個不存在的文件或目錄。

七、文件讀寫

(一)以讀的形式打開,並能寫(r+)

1) >> f = open("test.txt","r+")

>> f.write("xxx")

>> f.flush()

>> f.close()

2)光標會放在文件開頭,輸入的輸入會覆蓋開頭

(二)以寫的形式打開,並能讀(w+)

1) >> f = open("test.txt","w+")

>> data = f.read()

>> print(date)

2)若文件已存在會將其覆蓋,若文件不存在,會新建文件。

(三)追加模式(a+)

1) >> f = open("test.txt","a+")

2)光標在文件的末尾,寫入會追加到末尾,若文件不存在,會新建文件。

with open("test.txt","r+",encoding="utf-8") as f:
	f.write("我是中文")
	f.flush()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM