日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python从入门到入土

發布時間:2024/3/26 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python从入门到入土 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python從入門到入土

簡介

Python 是一種通用編程語言,其在科學計算和機器學習領域具有廣泛的應用。如果我們打算利用 Python 來執行機器學習,那么對 Python 有一些基本的了解就是至關重要的。本 Python 入門系列體驗就是為這樣的初學者精心準備的。

1 變量、運算符與數據類型

1. 注釋

在 Python 中,# 表示注釋,作用于整行。
【例子】單行注釋

# 這是一個注釋 print("Hello world")# Hello world

‘’’ ‘’’ 或者 “”" “”" 表示區間注釋,在三引號之間的所有內容被注釋
【例子】多行注釋

''' 這是多行注釋,用三個單引號 這是多行注釋,用三個單引號 這是多行注釋,用三個單引號 ''' print("Hello china") # Hello china""" 這是多行注釋,用三個雙引號 這是多行注釋,用三個雙引號 這是多行注釋,用三個雙引號 """ print("hello china") # hello china

2. 運算符

操作符名稱示例
+1 + 1
-2 - 1
*3 * 4
/3 / 4
//整除(地板除)3 // 4
%取余3 % 4
**2 ** 3

【例子】

print(1 + 1) # 2 print(2 - 1) # 1 print(3 * 4) # 12 print(3 / 4) # 0.75 print(3 // 4) # 0 print(3 % 4) # 3 print(2 ** 3) # 8

3. 變量和賦值

  • 在使用變量之前,需要對其先賦值。
  • 變量名可以包括字母、數字、下劃線、但變量名不能以數字開頭。
  • Python 變量名是大小寫敏感的,foo != Foo。
  • teacher = "老馬的程序人生" print(teacher) # 老馬的程序人生first = 2 second = 3 third = first + second print(third) # 5myTeacher = "老馬的程序人生" yourTeacher = "小馬的程序人生" ourTeacher = myTeacher + ',' + yourTeacher print(ourTeacher) # 老馬的程序人生,小馬的程序人生

    4. 數據類型與轉換

    類型名稱示例
    int整型 <class ‘int’>-876, 10
    float浮點型<class ‘float’>3.149, 11.11
    bool布爾型<class ‘bool’>True, False

    整型

    【例子】通過 print() 可看出 a 的值,以及類 (class) 是int。

    a = 1031print(a, type(a))# 1031 <class 'int'>

    Python 里面萬物皆對象(object),整型也不例外,只要是對象,就有相應的屬性 (attributes) 和方法(methods)。

    【例子】

    b = dir(int) print(b)# ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', # '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', # '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', # '__getattribute__', '__getnewargs__', '__gt__', '__hash__', # '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', # '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', # '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', # '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', # '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', # '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', # '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', # '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', # 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', # 'numerator', 'real', 'to_bytes']

    對它們有個大概印象就可以了,具體怎么用,需要哪些參數 (argument),還需要查文檔。看個bit_length()的例子。

    【例子】找到一個整數的二進制表示,再返回其長度。

    a = 1031 print(bin(a)) # 0b10000000111 print(a.bit_length()) # 11

    浮點型

    【例子】

    print(1, type(1)) # 1 <class 'int'>print(1., type(1.)) # 1.0 <class 'float'>a = 0.00000023 b = 2.3e-7 print(a) # 2.3e-07 print(b) # 2.3e-07

    有時候我們想保留浮點型的小數點后 n 位。可以用 decimal 包里的 Decimal 對象和 getcontext() 方法來實現。

    import decimal from decimal import Decimal

    Python 里面有很多用途廣泛的包 (package),用什么你就引進 (import) 什么。包也是對象,也可以用上面提到的dir(decimal) 來看其屬性和方法。

    【例子】getcontext() 顯示了 Decimal 對象的默認精度值是 28 位 (prec=28)。

    a = decimal.getcontext() print(a)# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, # capitals=1, clamp=0, flags=[], # traps=[InvalidOperation, DivisionByZero, Overflow])b = Decimal(1) / Decimal(3) print(b)# 0.3333333333333333333333333333

    【例子】使 1/3 保留 4 位,用 getcontext().prec 來調整精度。

    decimal.getcontext().prec = 4 c = Decimal(1) / Decimal(3) print(c)# 0.3333

    布爾型

    布爾 (boolean) 型變量只能取兩個值,True 和 False。當把布爾型變量用在數字運算中,用 1 和 0 代表 True 和 False。

    【例子】

    print(True + True) # 2 print(True + False) # 1 print(True * False) # 0

    除了直接給變量賦值 True 和 False,還可以用 bool(X) 來創建變量,其中 X 可以是

    • 基本類型:整型、浮點型、布爾型
    • 容器類型:字符串、元組、列表、字典和集合

    【例子】bool 作用在基本類型變量:X 只要不是整型 0、浮點型 0.0,bool(X) 就是 True,其余就是 False。

    print(type(0), bool(0), bool(1)) # <class 'int'> False Trueprint(type(10.31), bool(0.00), bool(10.31)) # <class 'float'> False Trueprint(type(True), bool(False), bool(True)) # <class 'bool'> False True

    【例子】bool 作用在容器類型變量:X 只要不是空的變量,bool(X) 就是 True,其余就是 False。

    print(type(''), bool(''), bool('python')) # <class 'str'> False Trueprint(type(()), bool(()), bool((10,))) # <class 'tuple'> False Trueprint(type([]), bool([]), bool([1, 2])) # <class 'list'> False Trueprint(type({}), bool({}), bool({'a': 1, 'b': 2})) # <class 'dict'> False Trueprint(type(set()), bool(set()), bool({1, 2})) # <class 'set'> False True

    確定bool(X) 的值是 True 還是 False,就看 X 是不是空,空的話就是 False,不空的話就是 True。

    • 對于數值變量,0, 0.0 都可認為是空的。
    • 對于容器變量,里面沒元素就是空的。

    獲取類型信息

    • 獲取類型信息 type(object)

    【例子】

    print(isinstance(1, int)) # True print(isinstance(5.2, float)) # True print(isinstance(True, bool)) # True print(isinstance('5.2', str)) # True

    注:

    • type() 不會認為子類是一種父類類型,不考慮繼承關系。
    • isinstance() 會認為子類是一種父類類型,考慮繼承關系。

    如果要判斷兩個類型是否相同推薦使用 isinstance()。

    類型轉換

    • 轉換為整型 int(x, base=10)
    • 轉換為字符串 str(object=‘’)
    • 轉換為浮點型 float(x)

    【例子】

    print(int('520')) # 520 print(int(520.52)) # 520 print(float('520.52')) # 520.52 print(float(520)) # 520.0 print(str(10 + 10)) # 20 print(str(10.1 + 5.2)) # 15.3

    5. print()函數

    print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    • 將對象以字符串表示的方式格式化輸出到流文件對象file里。其中所有非關鍵字參數都按str()方式進行轉換為字符串輸出;
    • 關鍵字參數sep是實現分隔符,比如多個參數輸出時想要輸出中間的分隔字符;
    • 關鍵字參數end是輸出結束時的字符,默認是換行符\n;
    • 關鍵字參數file是定義流輸出的文件,可以是標準的系統輸出sys.stdout,也可以重定義為別的文件;
    • 關鍵字參數flush是立即把內容輸出到流文件,不作緩存。

    【例子】沒有參數時,每次輸出后都會換行。

    shoplist = ['apple', 'mango', 'carrot', 'banana'] print("This is printed without 'end'and 'sep'.") for item in shoplist:print(item)# This is printed without 'end'and 'sep'. # apple # mango # carrot # banana

    【例子】每次輸出結束都用end設置的參數&結尾,并沒有默認換行。

    shoplist = ['apple', 'mango', 'carrot', 'banana'] print("This is printed with 'end='&''.") for item in shoplist:print(item, end='&') print('hello world')# This is printed with 'end='&''. # apple&mango&carrot&banana&hello world

    【例子】item值與’another string’兩個值之間用sep設置的參數&分割。由于end參數沒有設置,因此默認是輸出解釋后換行,即end參數的默認值為\n。

    shoplist = ['apple', 'mango', 'carrot', 'banana'] print("This is printed with 'sep='&''.") for item in shoplist:print(item, 'another string', sep='&')# This is printed with 'sep='&''. # apple&another string # mango&another string # carrot&another string # banana&another string

    2 位運算

    1. 原碼、反碼和補碼

    二進制有三種不同的表示形式:原碼、反碼和補碼,計算機內部使用補碼來表示。

    原碼:就是其二進制表示(注意,有一位符號位)。

    00 00 00 11 -> 3
    10 00 00 11 -> -3
    反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其余位取反(對應正數按位取反)。

    00 00 00 11 -> 3
    11 11 11 00 -> -3
    補碼:正數的補碼就是原碼,負數的補碼是反碼+1。

    00 00 00 11 -> 3
    11 11 11 01 -> -3
    符號位:最高位為符號位,0表示正數,1表示負數。在位運算中符號位也參與運算。

    2. 按位運算

    • 按位非操作 ~
    ~ 1 = 0 ~ 0 = 1

    ~ 把num的補碼中的 0 和 1 全部取反(0 變為 1,1 變為 0)有符號整數的符號位在 ~ 運算中同樣會取反。

    00 00 01 01 -> 5 ~ ———————————————— 11 11 10 10 -> -611 11 10 11 -> -5 ~ ———————————————— 00 00 01 00 -> 4
    • 按位與操作 &
    1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0

    只有兩個對應位都為 1 時才為 1

    00 00 01 01 -> 5 & 00 00 01 10 -> 6 ———————————————— 00 00 01 00 -> 4
    • 按位或操作 |
    1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0

    只要兩個對應位中有一個 1 時就為 1

    00 00 01 01 -> 5 | 00 00 01 10 -> 6 ———————————————— 00 00 01 11 -> 7
    • 按位異或操作 ^
    1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0

    只有兩個對應位不同時才為 1

    00 00 01 01 -> 5 ^ 00 00 01 10 -> 6 ———————————————— 00 00 00 11 -> 3

    異或操作的性質:滿足交換律和結合律

    A: 00 00 11 00 B: 00 00 01 11A^B: 00 00 10 11 B^A: 00 00 10 11A^A: 00 00 00 00 A^0: 00 00 11 00A^B^A: = A^A^B = B = 00 00 01 11
    • 按位左移操作 <<

    num << i 將num的二進制表示向左移動i位所得的值。

    00 00 10 11 -> 11 11 << 3 ———————————————— 01 01 10 00 -> 88
    • 按位右移操作 >>

    num >> i 將num的二進制表示向右移動i位所得的值。

    00 00 10 11 -> 11 11 >> 2 ———————————————— 00 00 00 10 -> 2

    3. 利用位運算實現快速計算

    通過 <<,>> 快速計算2的倍數問題。

    n << 1 -> 計算 n*2 n >> 1 -> 計算 n/2,負奇數的運算不可用 n << m -> 計算 n*(2^m),即乘以 2 的 m 次方 n >> m -> 計算 n/(2^m),即除以 2 的 m 次方 1 << n -> 2^n

    通過 ^ 快速交換兩個整數。 通過 ^ 快速交換兩個整數。

    a ^= b b ^= a a ^= b

    通過 a & (-a) 快速獲取a的最后為 1 位置的整數。

    00 00 01 01 -> 5 & 11 11 10 11 -> -5 ———————————————— 00 00 00 01 -> 100 00 11 10 -> 14 & 11 11 00 10 -> -14 ———————————————— 00 00 00 10 -> 2

    4. 利用位運算實現整數集合

    一個數的二進制表示可以看作是一個集合(0 表示不在集合中,1 表示在集合中)。

    比如集合 {1, 3, 4, 8},可以表示成 01 00 01 10 10 而對應的位運算也就可以看作是對集合進行的操作。

    元素與集合的操作:

    a | (1<<i) -> 把 i 插入到集合中 a & ~(1<<i) -> 把 i 從集合中刪除 a & (1<<i) -> 判斷 i 是否屬于該集合(零不屬于,非零屬于)

    集合之間的操作:

    a 補 -> ~a a 交 b -> a & b a 并 b -> a | b a 差 b -> a & (~b)

    注意:整數在內存中是以補碼的形式存在的,輸出自然也是按照補碼輸出。
    【例子】 Python 的bin() 輸出。

    print(bin(3)) # 0b11 print(bin(-3)) # -0b11print(bin(-3 & 0xffffffff)) # 0b11111111111111111111111111111101print(bin(0xfffffffd)) # 0b11111111111111111111111111111101print(0xfffffffd) # 4294967293

    是不是很顛覆認知,我們從結果可以看出:

    • Python中bin一個負數(十進制表示),輸出的是它的原碼的二進制表示加上個負號,巨坑。
    • Python中的整型是補碼形式存儲的。
    • Python中整型是不限制長度的不會超范圍溢出。

    所以為了獲得負數(十進制表示)的補碼,需要手動將其和十六進制數0xffffffff進行按位與操作,再交給bin()進行輸出,得到的才是負數的補碼表示。

    3 條件語句

    1. if 語句

    if expression:expr_true_suite

    if 語句的 expr_true_suite 代碼塊只有當條件表達式 expression 結果為真時才執行,否則將繼續執行緊跟在該代碼塊后面的語句。
    單個 if 語句中的 expression 條件表達式可以通過布爾操作符 and,or和not 實現多重條件判斷。
    【例子】

    if 2 > 1 and not 2 > 3:print('Correct Judgement!')# Correct Judgement!

    2. if - else 語句

    if expression:expr_true_suite else:expr_false_suite

    Python 提供與 if 搭配使用的 else,如果 if 語句的條件表達式結果布爾值為假,那么程序將執行 else 語句后的代碼。
    【例子】

    temp = input("猜一猜小姐姐想的是哪個數字?") guess = int(temp) # input 函數將接收的任何數據類型都默認為 str。 if guess == 666:print("你太了解小姐姐的心思了!")print("哼,猜對也沒有獎勵!") else:print("猜錯了,小姐姐現在心里想的是666!") print("游戲結束,不玩兒啦!")

    if語句支持嵌套,即在一個if語句中嵌入另一個if語句,從而構成不同層次的選擇結構。

    【例子】Python 使用縮進而不是大括號來標記代碼塊邊界,因此要特別注意else的懸掛問題。

    hi = 6 if hi > 2:if hi > 7:print('好棒!好棒!') else:print('切~')# 無輸出

    【例子】

    temp = input("猜一猜小姐姐想的是哪個數字?") guess = int(temp) if guess > 8:print("大了,大了") else:if guess == 8:print("你太了解小姐姐的心思了!")print("哼,猜對也沒有獎勵!")else:print("小了,小了") print("游戲結束,不玩兒啦!")

    3. if - elif - else 語句

    if expression1:expr1_true_suite elif expression2:expr2_true_suite.. elif expressionN:exprN_true_suite else:expr_false_suite
    • elif 語句即為 else if,用來檢查多個表達式是否為真,并在為真時執行特定代碼塊中的代碼。

    【例子】

    temp = input('請輸入成績:') source = int(temp) if 100 >= source >= 90:print('A') elif 90 > source >= 80:print('B') elif 80 > source >= 60:print('C') elif 60 > source >= 0:print('D') else:print('輸入錯誤!')

    4. assert 關鍵詞

    • assert這個關鍵詞我們稱之為“斷言”,當這個關鍵詞后邊的條件為 False 時,程序自動崩潰并拋出AssertionError的異常。

    【例子】

    my_list = ['lsgogroup'] my_list.pop(0) assert len(my_list) > 0# AssertionError

    4 循環語句

    【例子】在進行單元測試時,可以用來在程序中置入檢查點,只有條件為 True 才能讓程序正常工作。

    assert 3 > 7# AssertionError

    2. while - else 循環

    while語句最基本的形式包括一個位于頂部的布爾表達式,一個或多個屬于while代碼塊的縮進語句。

    while 布爾表達式:代碼塊

    while循環的代碼塊會一直循環執行,直到布爾表達式的值為布爾假。

    如果布爾表達式不帶有<、>、==、!=、in、not in等運算符,僅僅給出數值之類的條件,也是可以的。當while后寫入一個非零整數時,視為真值,執行循環體;寫入0時,視為假值,不執行循環體。也可以寫入str、list或任何序列,長度非零則視為真值,執行循環體;否則視為假值,不執行循環體。
    【例子】

    count = 0 while count < 3:temp = input("猜一猜小姐姐想的是哪個數字?")guess = int(temp)if guess > 8:print("大了,大了")else:if guess == 8:print("你太了解小姐姐的心思了!")print("哼,猜對也沒有獎勵!")count = 3else:print("小了,小了")count = count + 1 print("游戲結束,不玩兒啦!")

    3. for 循環

    4. for - else 循環

    5. range() 函數

    6. enumerate()函數

    7. break 語句

    8. continue 語句

    9. pass 語句

    10. 推導式

    5 異常處理

    1. Python 標準異常總結

    2. Python 標準警告總結

    3. try - except 語句

    4. try - except - finally 語句

    5. try - except - else 語句

    6. raise語句

    總結

    以上是生活随笔為你收集整理的Python从入门到入土的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。