溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中的變量、運算符與流程控制實例分析

發(fā)布時間:2022-05-30 10:49:04 來源:億速云 閱讀:149 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Python中的變量、運算符與流程控制實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python中的變量、運算符與流程控制實例分析”吧!

    一、執(zhí)行Python程序的兩種方式

    1、交互式

    在終端內(nèi)輸入“python3”,然后輸入python代碼

    Python中的變量、運算符與流程控制實例分析

    2、命令行式

    在終端內(nèi)輸入“python3 文本文件路徑”

    Python中的變量、運算符與流程控制實例分析

    二、變量

    1、變量的組成

    Python 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。

    在 Python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內(nèi)存中對象的類型。

    等號(=)用來給變量賦值。

    等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。

    變量名 = 變量值。

    變量名是用來接收變量值的

    name = 'nick' 
    age = 19

    2、變量名的定義規(guī)范

    • 變量名具有某種意義

    • 由數(shù)字/字母/下劃線組成,且不能由數(shù)字和下劃線開頭

    • 不能用Python關(guān)鍵字

    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    3、定義變量的兩種方式

    • 駝峰體:NameOfNick

    • 下劃線:name_of_nick(推薦)

    4、常量

    常量是約定俗成的一種規(guī)范,常量名的定義方式為全大寫。實際上可以被修改。

    AGE_OF_NICK = 19
    print(AGE_OF_NICK)

    三、Python變量內(nèi)存管理

    1、引用計數(shù)

    變量值的引用次數(shù)

    x = 257  # 257的引用計數(shù)為1
    y = x   # 257的引用計數(shù)為2
    del x  # 257的引用計數(shù)為1

    2、垃圾回收機制

    當變量值的引用計數(shù)為0的時候,該變量值會被Python自動回收它的內(nèi)存占用

    3、小整數(shù)池

    [-5,256]之間的整數(shù)會在Python解釋器啟動的時候,自動開辟一塊內(nèi)存存入這些整數(shù).也就是說這些小整數(shù)不會因為引用計數(shù)為0而被刪除。

    4、內(nèi)存地址與數(shù)據(jù)類型

    獲取變量的id,可以理解成變量在內(nèi)存中的地址 。

    x = 10
    print(x)  # 獲取變量的變量值
    print(id(x) )  # 獲取變量的id,可以理解成變量在內(nèi)存中的地址
    print(type(x) )  # 獲取變量的數(shù)據(jù)類型,下章會詳細介紹數(shù)據(jù)類型

    結(jié)果:

    10 
    8790885504960 
    < class 'int'>

    5、實例:

    id相等的變量,值一定相等,因為指向的是同一個內(nèi)存地址;

    值相等的變量,id不一定相等。

    x = 11
    y = x
    z = 11
    print(x == y)  # True
    print(x is y)  # True
    print(x is z)  # True,整數(shù)池的原因
    
    x = 255
    z = 255
    print(id(x) is id(z) )  # False

    四、花式賦值

    1、 鏈式賦值

    以下實例,創(chuàng)建一個整型對象,值為 10,從后向前賦值,三個變量被賦予相同的數(shù)值。

    a = b = c = d = 10 
    print(f'a:{a}, b:, c:{c}, d:rua0en9') #a:10, b:10, c:10, d:10

    2、 交叉賦值

    # 交叉賦值
    x = 10
    y = 20
    
    x, y = y, x
    print(x, y) #20 10
    
    # 相當于使用臨時變量
    x = 10 
    y = 20
    
    temp = x
    x = y
    y = temp
    
    print(x, y) #20 10

    3、多個變量賦值

    您也可以為多個對象指定多個變量。例如:

    a, b, c = 1, 2, "runoob"

    以上實例,兩個整型對象 1 和 2 的分配給變量 a 和 b,字符串對象 "runoob" 分配給變量 c。

    寫一個斐波納契數(shù)列 Fibonacci series:

    # 兩個元素的總和確定了下一個數(shù)
    a, b = 0, 1
    while b < 10:
        print(b, end=',')
        a, b = b, a+b
    # 1,1,2,3,5,8,

    五、與用戶交互

    name = input('請輸入你的姓名:')
    pwd = input('請輸入你的密碼:')
    
    print(type(name))
    print(type(pwd))
    
    # 請輸入你的姓名:a
    # 請輸入你的密碼:1
    # 
    # 'str'>

    無論我們輸入的值是數(shù)字類型、字符串類型、列表類型,input的接收值都是字符串類型。

    六、格式化輸出

    1、 占位符(舊式字符串格式化,逐步淘汰)

    • %s:接收任意數(shù)據(jù)類型的數(shù)據(jù)

    • %d:接收數(shù)字類型的數(shù)據(jù)

    name = 'nick'
    age = 19
    print('my name is %s my age is %d' % (name, age))
    # my name is nick my age is 19

    2、 format格式化

    • {}:接收任意數(shù)據(jù)類型的數(shù)據(jù)。

    1、格式:<模板字符串>.format(<逗號分隔的參數(shù)>)
    name = 'nick'
    age = 19
    #1、括號及其里面的字符 (稱作格式化字段) 將會被 format() 中的參數(shù)替換。
    print("Hello, {}. You are {}.".format(name, age)) # Hello, nick. You are 19.
      
    
    2、在括號中的數(shù)字用于指向傳入對象在 format() 中的位置
    print("Hello, {1}. You are {0}-{0}.".format(age, name)) # Hello, nick. You are 19-19.
    
    3、如果在 format() 中使用了關(guān)鍵字參數(shù), 那么它們的值會指向使用該名字的參數(shù)。
    print("Hello, {name}. You are {age}-{age}.".format(age=age, name=name))# Hello, nick. You are 19-19.
    
    4、位置及關(guān)鍵字參數(shù)可以任意的結(jié)合: 
    print('站點列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))
    2、模板字符串中的格式控制標記

    {<參數(shù)序號> : <格式控制標記>}

    :<填充><對齊><寬度><,><.精度><類型>

    引導

    符號

    填充的單個字符<: 左對齊 
    >: 右對齊 
    ^: 居中對齊
    槽設(shè)定的輸出寬度數(shù)字的千位分隔符

    浮點數(shù)小數(shù)

    或 字符串最大輸出長度

    • 整數(shù)類型 :b(二進制),c,d,o,x,X

    • 浮點數(shù)類型:e,E,f,%(百分數(shù))

    3、python字符串格式化符號: 
    • %c: 格式化字符及其ASCII碼

    • %s: 格式化字符串

    • %d: 格式化整數(shù)

    • %u: 格式化無符號整型

    • %o: 格式化無符號八進制數(shù)

    • %x: 格式化無符號十六進制數(shù)

    • %X: 格式化無符號十六進制數(shù)(大寫)

    • %f: 格式化浮點數(shù),可指定小數(shù)點后的精度

    • %e: 用科學計數(shù)法格式化浮點數(shù)

    • %E: 作用同%e,用科學計數(shù)法格式化浮點數(shù)(大寫)

    • %g: %f和%e的簡寫

    • %G: %f 和 %E 的簡寫

    • %p: 用十六進制數(shù)格式化變量的地址

    print("{0: =^20 }".format("PYTHON"))  # '=======PYTHON=======' 使用等號,居中對齊
    print("{0: *>20 }".format("BIT"))  # '*****************BIT' 使用星號,文字右對齊
    print("{:10}".format("BIT"))  # 'BIT       ' 總長度為10,不足以空格補足。在:后傳入一個整數(shù), 可以保證該域至少有這么多的寬度。 用于美化表格時很有用。
    print("{0: ,.2f}".format(12345.6789))  # '12,345.68' 使用千分符,同時保留到小數(shù)點后兩位
    print("{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425))  # '110101001,?,425,651,1a9,1A9'
    print("{0:e},{0:E},{0:f},{0:%}".format(3.14))  # '3.140000e+00,3.140000E+00,3.140000,314.000000%'

    可以使用 bin,oct,hex 可輸出數(shù)字的二進制,八進制,十六進制形式,例如:

    a = 0b111100
    print(bin(a))
    # '0b111100'
    print(oct(a))
    # '0o74'
    print(hex(a))
    # '0x3c'
    4、字段格式化

    字典, 然后使用方括號 [] 來訪問鍵值 :

    table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
    print('{0[Runoob]:d}; {0[Google]:d}; {0[Taobao]:d}'.format(table))
    # 2; 1; 3

    也可以通過在 table 變量前使用 ** 來實現(xiàn)相同的功能:

    table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
    print('{Runoob:d}; {Google:d}; {Taobao:d}'.format(**table))
    # 2; 1; 3

    3、 f-string字面量格式化

    f-string 是 python3.6 之后版本添加的,稱之為字面量格式化字符串,是新的格式化字符串的語法。

    在字符串前面加上f或F,后面跟著字符串,字符串中的表達式用大括號 {} 包起來,它會將變量或表達式計算后的值替換進去。

    用了這種方式明顯更簡單了,不用再去判斷使用 %s,還是 %d。

    name = "nick"
    age = 19
    print(F"Hello, {name}. You are {age}.")#Hello, nick. You are 19.
    
    print(f'{age*2}')#38
    salary = 6.6666
    print(f'{salary:.2f}')#6.67
    
    w = {'name': 'Runoob', 'url': 'www.runoob.com'}
    print(f'{w["name"]}: {w["url"]}')
    # 'Runoob: www.runoob.com'

    在 Python 3.8 的版本中可以使用 = 符號來拼接運算表達式與結(jié)果:

    x = 1
    print(f'{x+1}')   # Python 3.6
    # 2
    
    x = 1
    print(f'{x+1=}')   # Python 3.8
    # 'x+1=2'

    七、基本運算符

    1、 算術(shù)運算符

    +、 - 、* 、/ 、 //、 % 、**

    # 除
    print(10 / 3)  # 3.3333333333333335
    
    # 除,只取整數(shù)部分
    print(10 // 3)  # 3
    print(10 // 4)  # 2
    
    # %:取余
    print(10 % 3)  # 1
    
    # **,冪
    print(10 ** 3)  # 1000

    2、 邏輯運算符(運算符中優(yōu)先級最低,即最后運算)

    and、 or、 not 。

    優(yōu)先級:not>and>or

    # 從左到右的方式找到邏輯運算符,找到邏輯運算符的左邊,左邊成立,再去找到邏輯運算符的右邊
    print(3 > 3 and 1 > 2 or 2 > 1)  # False

    3、 比較運算符

    >、 >=、 <、 <=、 ==、 !=(Pyhton3 已不支持 <> 運算符,可以使用 != 代替)

    4、 賦值運算符

    =、 +=、 -=、 *=、 /=、 //=、 **=、 %=、:=(海象運算符,可在表達式內(nèi)部為變量賦值。Python3.8 版本新增運算符。)

    5、 身份運算符,比較兩個對象的存儲單元。

    is、 is not

    is和==的區(qū)別:

    • is:用于判斷兩個變量引用對象是否為同一個(是否在同一塊內(nèi)存空間中),

    • ==:用于判斷引用變量的值是否相等。

    6、 位運算符

    • & : 按位與運算符

    • | : 按位或運算符

    • ^: 按位異或運算符

    • ~ : 按位取反運算符

    • <<: 左移動運算符

    • >> : 右移動運算符

    a = 60  # 60 = 0011 1100
    b = 13  # 13 = 0000 1101
    c = 0
    
    c = a & b
    print( c)# 12 = 0000 1100
    c = a | b
    print(c)# 61 = 0011 1101
    c = a ^ b
    print( c)# 49 = 0011 0001
    c = ~a
    print( c)# -61 = 1100 0011
    c = a << 2
    print(c)# 240 = 1111 0000
    c = a >> 2
    print(c)# 15 = 0000 1111

    7、 成員運算符

    in、 not in

    包括字符串,列表或元組等

    a = 10
    b = 20
    list = [1, 2, 3, 4, 5]
    
    print(a in list) # false

    8、 運算符優(yōu)先級(略)

    如果需要某個運算符優(yōu)先運算,則加個括號,使用a and b is c == d的是傻逼

    9、 解壓縮

    hobby_list = ['read','run','sleep','fishing','piao']
    
    # 如果取第2-3個愛好
    _,hobby2,hobby3,*_ = hobby_list
    
    print(hobby2, hobby3) #run sleep

    字典也是可以的,但是字典解壓縮的是key。

    info = {'name': 'nick', 'age': 18}
    x, y = info
    print(x, y) #name age

    八、流程控制

    1、 if判斷

    Python 中用 elif 代替了 else if,所以if語句的關(guān)鍵字為:if &ndash; elif &ndash; else。

    注意:

    • 1、每個條件后面要使用冒號 :,表示接下來是滿足條件后要執(zhí)行的語句塊。

    • 2、使用縮進來劃分語句塊,相同縮進數(shù)的語句在一起組成一個語句塊。

    • 3、在Python中沒有switch &ndash; case語句。

    # if
    if 條件:
        代碼塊
    
    # if...else
    if 條件:
        代碼塊
    else:
        代碼塊
    
    # if...elif....elif...else
    if 條件:
        代碼塊
    elif 條件: 
        代碼塊
    elif 條件:
        代碼塊
    
    ...(可以寫任意個elif)
    
    else:
        代碼塊

    2、 while循環(huán)

    同樣需要注意冒號和縮進。另外,在 Python 中沒有 do..while 循環(huán)。

    #while
    while 條件:
        代碼塊
    
    #while + break
    while 條件:
        代碼塊
        break  # 結(jié)束本層循環(huán),跳出循環(huán)
    
    # while + continue
    while 條件:
        代碼塊
        if 條件:
            代碼塊
            cotinue  # 不執(zhí)行下面代碼,然后繼續(xù)循環(huán),即跳出本次循環(huán)
        代碼塊
    
    #while + else
    while 條件:
        代碼塊
    else:
        print('如果我沒有被break,我就會被打印出來')

    實例:

    n = 1
    while n < 4:
        print(n)
        n += 1
    else:
        print("a")
    # 1,2,3,a

    使用循環(huán)嵌套來實現(xiàn)99乘法法則:

    # 外邊一層循環(huán)控制行數(shù)
    # i是行數(shù)
    i = 1
    while i <= 9:
        # 里面一層循環(huán)控制每一行中的列數(shù)
        j = 1
        while j <= i:
            mut = j * i
            print("%d*%d=%d" % (j, i, mut), end="  ")
            j += 1
        print("")
        i += 1
    # 1*1=1  
    # 1*2=2  2*2=4  
    # 1*3=3  2*3=6  3*3=9  
    # 1*4=4  2*4=8  3*4=12  4*4=16  
    # 1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
    # 1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    # 1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    # 1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    # 1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

    3、for循環(huán)

    for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。

    for循環(huán)的循環(huán)次數(shù)受限于容器類型的長度,而while循環(huán)的循環(huán)次數(shù)需要自己控制。

    #for
    for i in range/str/list/tuple/dict/set(可迭代對象):
        print(i)
    
    #for + break
    for i in range/str/list/tuple/dict/set(可迭代對象):
        print(i)
        break  # 結(jié)束本層循環(huán)
    
    # for + continue
    for i in range/str/list/tuple/dict/set(可迭代對象):
        print(i)
        if 條件:
            continue  # 結(jié)束本次循環(huán),即不執(zhí)行下面代碼,繼續(xù)循環(huán)
        代碼塊
    
    #for + else
    for i in range/str/list/tuple/dict/set(可迭代對象):
        print(i)
    else:
        print('如果我沒有被break,我就會被打印出來')

    實例:

    # for循環(huán)按照索引取值
    
    name_list = ['nick', 'jason', 'tank', 'sean']
    for i in range(len(name_list)):
        print(i, name_list[i])
        
    # 0 nick
    # 1 jason
    # 2 tank
    # 3 sean

    九、range()函數(shù)

    如果你需要遍歷數(shù)字序列,可以使用內(nèi)置range()函數(shù)。它會生成數(shù)列,例如:

    for i in range(5):
        print(i)
    # 0 1 2 3 4

    你也可以使用range指定區(qū)間的值:

    for i in range(5, 9):
        print(i)
    # 5 6 7 8

    也可以使range以指定數(shù)字開始并指定不同的增量(甚至可以是負數(shù),有時這也叫做'步長'):

    for i in range(0, 10, 3):
        print(i)
    #   0 3 6 9

    負數(shù):

    for i in range(-10, -100, -30):
        print(i)
    # -10 -40 -70

    您可以結(jié)合range()和len()函數(shù)以遍歷一個序列的索引,如下所示:

    a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
    for i in range(len(a)):
        print(i, a[i])
    # 0 Google 1 Baidu 2 Runoob 3 Taobao 4 QQ

    還可以使用range()函數(shù)來創(chuàng)建一個列表:

    a = list(range(5))
    print(a)
    # [0, 1, 2, 3, 4]

    實例:

    1-100 的和:

    print(sum(range(101)))

    十、pass 語句

    Python pass是空語句,是為了保持程序結(jié)構(gòu)的完整性。

    pass 不做任何事情,一般用做占位語句,如下實例

    while True:
        pass  # 等待鍵盤中斷 (Ctrl+C)

    最小的類:

    class MyEmptyClass:
        pass

    到此,相信大家對“Python中的變量、運算符與流程控制實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI