天天看點

python案例十講

python例題十講

李立宗

2021年10月16日 版本V1.0

文章目錄

  • ​​python例題十講​​
  • ​​題目1:分組示例​​
  • ​​分組思路​​
  • ​​知識點1:随機數​​
  • ​​知識點2:結構(循環、分支)​​
  • ​​主程式​​
  • ​​改進1​​
  • ​​改進2​​
  • ​​題目2:票價示例​​
  • ​​知識點1:輸入​​
  • ​​知識點2:多分支結構​​
  • ​​主程式​​
  • ​​題目3:身高與票價​​
  • ​​知識點1:輸入控制​​
  • ​​知識點2:多分支結構​​
  • ​​主程式:範例1​​
  • ​​主程式:範例2​​
  • ​​題目4:猴子吃桃​​
  • ​​問題分析​​
  • ​​主程式​​
  • ​​改進1:使用一個變量。​​
  • ​​改進2:輸出控制​​
  • ​​題目5:使用者登入​​
  • ​​知識點1:循環​​
  • ​​知識點2: break​​
  • ​​知識點3:與或關系​​
  • ​​主程式​​
  • ​​題目6:九九乘法表​​
  • ​​知識點1:輸出資料控制在同一行​​
  • ​​知識點2:嵌套循環​​
  • ​​知識點3:嵌套循環内運算​​
  • ​​知識點4:嵌套循環次數控制​​
  • ​​主程式​​
  • ​​改進:格式控制​​
  • ​​題目7:平均身高​​
  • ​​知識點1:循環控制​​
  • ​​知識點2:求和​​
  • ​​主程式​​
  • ​​改進:增加說明​​
  • ​​題目8:猜數字遊戲​​
  • ​​題目9:數值各位和​​
  • ​​主程式​​
  • ​​拓展:不同方式計算十位值​​
  • ​​題目10:半徑和直徑互換​​
  • ​【例16.1.1】随機生成一個1到10之間的随機數。
    # 例16.1.1.py
    import random
    
    x = random.randint(1, 10)
    print(x)      

    輸出結果:

    一個1到10之間的随機數。

    知識點2:結構(循環、分支)

    循環結構:for-in循環結構

    選擇結構:if分支結構

    主程式

    # 例16.1.2.py
    import random
    
    x = [0, 0]
    for i in range(100):
        a = random.randint(1, 2)
        if a == 1:
            x[0] = x[0] + 1
        else:
            x[1] = x[1] + 1
    print("第1組人數:", x[0])
    print("第2組人數:", x[1])      
    輸出結果:
    第1組人數: 54
    第2組人數: 46      
    每次運作的輸出不一樣,因為分組是根據随機值劃分的。

    改進1

    将生成的數按照大小進行分組。
    # 例16.1.3.py
    import random
    
    x = [0, 0]
    for i in range(100):
        a = random.randint(0, 100)
        if a > 50:
            x[0] = x[0] + 1
        else:
            x[1] = x[1] + 1
    print("第1組人數:", x[0])
    print("第2組人數:", x[1])      
    輸出結果:
    第1組人數: 52
    第2組人數: 48      
    上述是某次運算結果,由于是随機,每次情況略有不同,但是兩組值會大體相當。

    改進2

    将生成的數按照奇數、偶數, 進行分組。
    # 例16.1.4.py
    import random
    
    x = [0, 0]
    for i in range(100):
        a = random.randint(0, 100)
        if a % 2 == 0:
            x[0] = x[0] + 1
        else:
            x[1] = x[1] + 1
    print("第1組人數:", x[0])
    print("第2組人數:", x[1])      
    輸出結果:
    第1組人數: 47
    第2組人數: 53      

    題目2:票價示例

    某公園,票價政策為:60歲及以上老人半價50元、成年人100元、未成年人免費。

    需要有歸納能力,進一步歸納如下:

    * >= 60:半價
    * [18,60):正常票價
    * <18:免費      

    知識點1:輸入

    input:讀取鍵盤的輸入

    int:鍵盤讀取的内容是字元串,需要使用int将其轉換為數值類型

    【例16.2.1】輸入一個數值,觀察其在作為字元串與數值時的不同處理結果。

    # 例16.2.1.py
    x = input("請輸入一個數值:")
    print(x + "5")
    print(int(x) + 5)      
    輸出
    請輸入一個數值:10
    105
    15      

    知識點2:多分支結構

    多分支:包含if…elif…else的分支結構

    具體結構:

    if 條件A:
        語句A
    elif 條件B:
        語句B
    else:      

    條件B是在條件A不成立的情況下發生的。

    例如,如下的語句"elif x>50"是在“if x>60"不成立的情況下發生的。

    是以,“elif x>50"對應的值範圍是“在50到60之間(不包含50,包含60)”,即(50,60]。

    # 例16.2.2.py
    import random
    
    x = random.randint(0, 100)
    print("x=", x)
    if x > 60:
        print("x>60")
    elif x > 50:
        print("x在50到60之間(不包含50,包含60)")
    else:
        print("x<=50")      

    主程式

    # 例16.2.3.py
    x = int(input("請輸入您的年齡:"))
    print("您輸入的年齡是:", x)
    if x >= 60:
        price = 50
    elif x >= 18:
        price = 100
    else:
        price = 0
    print("您支付的票價為:", price)      
    輸出:
    上述程式,在輸入不同年齡時,會對應不同的輸出結果。      

    題目3:身高與票價

    某公園規定:随同成人入園身高1.2~1.5米的兒童,應當購買兒童票;超過1.5米時應買全價票。每一成人遊客可免費攜帶一名身高不足1.2米的兒童。

    簡單來說:歸納如下:

    * >1.5:全價票
    * [1.2,1.5]:兒童票
    * <1.2:免費      
    或者,歸納如下:
    * <1.2:免費
    * [1.2,1.5]:兒童票
    * >1.5:全價票      

    知識點1:輸入控制

    input:讀取鍵盤的輸入

    int:鍵盤讀取的内容是字元串,需要使用int将其轉換為數值類型【針對整數】

    float:鍵盤讀取的内容是字元串,需要使用float将其轉換為數值類型【針對小數】

    【例16.3.1】輸入一個數值,觀察其在作為字元串與數值時的不同處理結果。

    # 例16.3.1.py
    x = input("請輸入一個數值:")
    print(x + "5")
    # print(int(x) + 5)   #如果x是小數,會發生錯誤
    print(float(x) + 5)      
    輸出
    請輸入一個數值:1.2
    1.25
    6.2      

    知識點2:多分支結構

    多分支結構:包含if…elif…else的分支結構

    主程式:範例1

    • >1.5:全價票
    • [1.2,1.5]:兒童票
    • <1.2:免費
    # 例16.3.2.py
    h = float(input("請輸入您的身高:"))
    print("您輸入的身高是:", h)
    if h > 1.5:
        price = "全價票"
    elif h >= 1.2:
        price = "半價票"
    else:
        price = "免票"
    print("您支付的票價為:", price)      
    輸出:
    上述程式,在輸入不同身高時,會對應不同的輸出結果。      

    主程式:範例2

    • <1.2:免費
    • [1.2,1.5]:兒童票
    • >1.5:全價票
    # 例16.3.3.py
    h = float(input("請輸入您的身高:"))
    print("您輸入的身高是:", h)
    if h < 1.2:
        price = "免票"
    elif h <= 1.5:
        price = "半價票"
    else:
        price = "全價票"
    print("您支付的票價為:", price)      
    輸出:
    上述程式,在輸入不同年齡時,會對應不同的輸出結果。      

    題目4:猴子吃桃

    猴子第1天摘下若幹桃子,當即吃了一半,還不過瘾,就又多吃了一個。第2天早上,将剩下的桃子吃掉一半後,又多吃了一個。以後,每天早上都吃前一天剩下的一半加一個。到第10天早上想再吃時,發現隻剩下一個桃子了。求第1天共摘了多少。

    問題分析

    已知第10天(day10),則第9天(day9),存在如下關系:

    實際上,依次類推往前推,每一天都是後一天加上1後的2倍。具體為:

    也就是說,從第10天開始,依次往前推,每一天都是按照上述公式處理。

    是以,可以使用循環【for i in range(9, 0, -1)】實作。

    主程式

    【例16.4.1】根據邏輯關系計算桃子的數量。

    定義變量:today、yesterday分别表示今天的桃子數量、昨天的桃子數量。

    循環:從目前第10天開始,計算第9天的桃子數量。依次循環。

    # 例16.4.1.py
    today = 1
    for i in range(9, 0, -1):
        yesterday = (today + 1) * 2
        today = yesterday
    print('第1天共摘了%s個桃子' % yesterday)      

    【例16.4.2】顯示每天的桃子的數量。

    使用print語句顯示每天的桃子數量。

    # 例16.4.2.py
    today = 1
    print('第10天吃之前:有1個桃子')
    for i in range(9, 0, -1):
        yesterday = (today + 1) * 2
        today = yesterday
        print('第', i, '天吃之前', '有', yesterday, '個桃子')
    print('第1天共摘了%s個桃子' % yesterday)      
    當然,我們平時看到的程式,可能變量的定義比較随意。例如,可能為:
    # 構造變量x2/x1
    x2 = 1
    print('第10天吃之前:有1個桃子')
    for i in range(9, 0, -1):
        x1 = (x2 + 1) * 2
        x2 = x1
        print('第', i, '天吃之前', '有', x1, '個桃子')
    print('第1天共摘了%s個桃子' % x1)      

    改進1:使用一個變量。

    不需要構造兩個變量,僅僅使用一個變量更替實作即可。

    具體為:

    peach = (peach + 1) * 2      
    程式如下:
    # 例16.4.3.py
    peach = 1
    print('第10天吃之前:1個桃子')
    for i in range(9, 0, -1):
        peach = (peach + 1) * 2
        print('第', i, '天吃之前', '有', peach, '個桃子')
    print('第1天共摘了%s個桃子' % peach)      

    改進2:輸出控制

    使用%控制輸出

    %d:格式化輸出一個整數;

    %f:格式化輸出浮點數;

    %s:格式化輸出字元串;

    a = 666
    print("數值%d表示非常有趣?" % a)      
    輸出結果為:
    數值666表示非常有趣?
    更具體來說:

    %4d:其中的4表示占位長度,占4位,不足在前面補空格;超過4位,全部顯示。

    %4.2f:數值4表示總長度、2表示2個小數位;

    %8s:輸出8位字元,不足時前面補空格、超過8位,全部顯示;

    # 例16.4.4.py
    peach = 1
    print('第10天吃之前:1個桃子')
    for i in range(9, 0, -1):
        peach = (peach + 1) * 2
        print('第%2d天吃之前:有%4d個桃子' % (i, peach))
    print('第1天共摘了%s個桃子' % peach)      
    輸出結果:
    第10天吃之前:1個桃子
    第 9天吃之前:有   4個桃子
    第 8天吃之前:有  10個桃子
    第 7天吃之前:有  22個桃子
    第 6天吃之前:有  46個桃子
    第 5天吃之前:有  94個桃子
    第 4天吃之前:有 190個桃子
    第 3天吃之前:有 382個桃子
    第 2天吃之前:有 766個桃子
    第 1天吃之前:有1534個桃子
    第1天共摘了1534個桃子      
    可以看到輸出中對輸出的資料寬度進行了控制。

    題目5:使用者登入

    某考試系統,使用者名為“李立宗”,密碼為“13602153866”。在使用者輸入正确的使用者名和密碼後,顯示登陸成功;否則,顯示“登入顯示”。使用者有三次試錯機會。

    知識點1:循環

    使用者具有三次機會,依靠循環實作。
    for i in range(3)
    這是典型的循環結構,通過控制range(N)中值N來控制循環的次數。
    # 例16.5.1.py
    for i in range(3):
        print("你好")      
    輸出結果為:

    你好

    你好

    你好

    你好

    你好

    知識點2: break

    關鍵字break,用于退出循環。

    通常情況下,在某個特定條件下,退出循環。

    # 例16.5.2.py
    for i in range(3):
        if i == 2:
            break
        print(i)      
    輸出結果為:
    1
    當使用者輸入正确的使用者名和密碼後,不再需要循環了,要退出循環。

    知識點3:與或關系

    與關系:and。兩個條件同時成立,結果為真。類似于串聯電路。

    或關系:or。兩個條件,有一個成立,結果為真。類似于并聯電路。

    與或關系具體示意圖如下:

    python案例十講

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-ckndP48d-1634395880549)(…/typora/image-20211016113042200.png)]

    【例16.5.3】當使用者名和密碼都正确時、輸出“登陸成功”;否則,輸出“使用者名或密碼錯誤”。

    # 例16.5.3.py
    name = input("請輸入使用者名:")
    password = input("請輸入密碼:")
    if name == "lilizong" and password == "13602153866":
        print("登陸成功")
    else:
        print("使用者名或密碼錯誤")      
    【例16.5.4】當年齡大于60歲,或者小于18歲,免門票;否則,購買全價票。
    # 例16.5.4.py
    age = int(input("請輸入年齡:"))
    if age > 60 or age < 18:
        print("免門票")
    else:
        print("請購買全價票")      

    主程式

    主程式如下:
    # 例16.5.5.py
    for i in range(3):
        name = input("請輸入使用者名:")
        password = input("請輸入密碼:")
        if name == "lilizong" and password == "13602153866":
            print("登陸成功")
            break
        else:
            print("使用者名或密碼錯誤")      

    題目6:九九乘法表

    輸入如下所示的九九乘法表。
    1*1= 1 
    2*1= 2 2*2= 4 
    3*1= 3 3*2= 6 3*3= 9 
    4*1= 4 4*2= 8 4*3=12 4*4=16 
    5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 
    6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
    7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
    8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
    9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81       

    知識點1:輸出資料控制在同一行

    将循環資料輸出在同一行,采用【end=” “】控制每次輸出不要換行,而是在輸出結果加上空格。
    # 例16.6.1.py
    for i in range(1, 10):
        print(i, end=" ")
    print()      
    程式輸出如下:
    1 2 3 4 5 6 7 8 9
    需要注意,最後的【print()】表示在輸出完所有的數值後,加一個換行。

    知識點2:嵌套循環

    嵌套循環是在循環裡面嵌入循環。将内層循環看成一個獨立的整體,更利于了解嵌套循環。

    例如,将下面的【例16.6.1.py】内的代碼看為一個整體,則可以将【在同一行輸出1到9】作為一個整體。

    python案例十講
    将上述代碼,用在一個循環體内,可以将上述代碼執行指定的次數。
    # 例16.6.2.py
    for j in range(1, 10):
        for i in range(1, 10):
            print(i, end=" ")
        print()      
    程式輸出如下:

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    1 2 3 4 5 6 7 8 9

    從上述程式可以看到,還需要做兩點改進:

    **改進1:**将每一行乘以行号:第1行乘以1,第2行乘以2,以此類推。實際上每一行乘以j的值;

    **改進2:**控制每一行輸出的數值個數,第1行輸出1個數值,第2行輸出2個數值,以此類推。實際上,每行輸出的個數是j個值。

    知識點3:嵌套循環内運算

    **改進1:**将每一行乘以行号:第1行乘以1,第2行乘以2,以此類推。實際上每一行乘以j的值;
    # 例16.6.3.py
    for j in range(1, 10):
        for i in range(1, 10):
            print(i * j, end=" ")
        print()      
    程式輸出如下:

    1 2 3 4 5 6 7 8 9

    2 4 6 8 10 12 14 16 18

    3 6 9 12 15 18 21 24 27

    4 8 12 16 20 24 28 32 36

    5 10 15 20 25 30 35 40 45

    6 12 18 24 30 36 42 48 54

    7 14 21 28 35 42 49 56 63

    8 16 24 32 40 48 56 64 72

    9 18 27 36 45 54 63 72 81

    知識點4:嵌套循環次數控制

    **改進2:**控制每一行輸出的數值個數,第1行輸出1個數值,第2行輸出2個數值,以此類推。實際上,每行輸出的個數是j個值。
    # 例16.6.4.py
    for j in range(1, 10):
        for i in range(1, j+1):
            print(i * j, end=" ")
        print()      
    程式輸出如下:

    1

    2 4

    3 6 9

    4 8 12 16

    5 10 15 20 25

    6 12 18 24 30 36

    7 14 21 28 35 42 49

    8 16 24 32 40 48 56 64

    9 18 27 36 45 54 63 72 81

    主程式

    将乘數加上,結果如下:
    # 例16.6.5.py
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(i, '*', j, '=', i * j, end=" ")
        print()      
    輸出結果如下:

    1 * 1 = 1

    2 * 1 = 2 2 * 2 = 4

    3 * 1 = 3 3 * 2 = 6 3 * 3 = 9

    4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16

    5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25

    6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36

    7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49

    8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64

    9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81

    改進:格式控制

    通過格式控制符控制輸出的格式:
    # 例16.6.6.py
    for i in range(1, 10):
        for j in range(1, i + 1):
            print("%d*%d=%-2d" % (i, j, i * j), end=" ")
        print()      
    輸出結果如下:
    1*1=1  
    2*1=2  2*2=4  
    3*1=3  3*2=6  3*3=9  
    4*1=4  4*2=8  4*3=12 4*4=16 
    5*1=5  5*2=10 5*3=15 5*4=20 5*5=25 
    6*1=6  6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
    7*1=7  7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
    8*1=8  8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
    9*1=9  9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81       

    題目7:平均身高

    編寫一個程式,能夠測量本組同學的平均身高。

    知識點1:循環控制

    要點1:控制次數。通過讀取一個資料n,将n作為控制循環的次數。

    要點2:顯示目前的次數。實作起來包含兩點:

    要點2.1:使用str(i+1),将數值轉換為字元串,友善後續運算。數值無法與字元串直接運算。

    要點2.2:使用加号“+”完成字元串的連接配接。例如:【“第”+str(i+1)+“次讀取資料”】

    # 例16.7.1.py
    s = 0
    n = int(input("本組同學個數:\n"))
    for i in range(n):
        print("第"+str(i+1)+"次讀取資料")      
    輸出結果如下:

    本組同學個數:

    3

    第1次讀取資料

    第2次讀取資料

    第3次讀取資料

    知識點2:求和

    想象有三堆豆子,第1堆有1個,第2堆有2個,第3堆有3個。

    拿一個空盒子,分别把豆子裝進盒子裡。

    python案例十講

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-U9zvjxNB-1634395880555)(…/typora/image-20211016140726080.png)]

    步驟1:在第1堆豆子旁,把第1堆裡面的一粒豆子,放進盒子。

    盒子(新值) = 盒子(原有值) + 1
    python案例十講

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-zGYe75Cl-1634395880557)(…/typora/image-20211016140747332.png)]

    步驟2:在第2堆豆子旁,把第2堆裡面的2粒豆子,放進盒子。

    盒子(新值) = 盒子(原有值) + 2
    python案例十講

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-zcra0bUy-1634395880559)(…/typora/image-20211016140759031.png)]

    步驟3:在第3堆豆子旁,把第3堆裡面的3粒豆子,放進盒子。

    盒子(新值) = 盒子(原有值) + 3
    python案例十講

    [外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-vlzOZlZD-1634395880560)(…/typora/image-20211016140814211.png)]

    【例16.7.2】設計一個程式,計算1到數值N的和。

    # 例16.7.2.py
    # 計算1到N的和。
    s = 0
    n = int(input("要加到幾:\n"))
    for i in range(n+1):
        s += i
    print("和為:", s)      
    程式輸出如下:

    要加到幾:

    5

    和為: 15

    【例16.7.3】設計一個程式,計算指定個數的輸入數值的和。
    # 例16.7.3.py
    # 計算指定個數的數值和。
    s = 0
    n = int(input("要計算幾個數:\n"))
    for i in range(n):
        a = float(input('請輸入一個數值:'))
        s += a
    print("和為:", s)      
    程式輸出如下:

    要計算幾個數:

    3

    請輸入一個數值:6

    請輸入一個數值:9

    請輸入一個數值:8

    和為: 23.0

    主程式

    # 例16.7.4.py
    s = 0
    n = int(input("本組同學個數:\n"))
    for i in range(n):
        h = float(input('請輸入身高值:'))
        s += h
    average = s / n
    print("本組同學的平均身高值為:%.2f" % average)      
    程式輸出如下:
    本組同學個數:
    3
    請輸入身高值:1.81
    請輸入身高值:1.65
    請輸入身高值:1.72
    本組同學的平均身高值為:1.73      

    改進:增加說明

    增加輸入提示說明
    # 例16.7.5.py
    s = 0
    n = int(input("本組同學個數:\n"))
    for i in range(n):
        h = float(input('請輸入第' + str(i+1) + '個同學的身高:'))
        s += h
    average = s / n
    print("本組同學的平均身高值為:%.2f" % average)      
    程式輸出結果如下:

    本組同學個數:

    3

    請輸入第1個同學的身高:1.81

    請輸入第2個同學的身高:1.62

    請輸入第3個同學的身高:1.78

    本組同學的平均身高值為:1.74

    題目8:猜數字遊戲

    設計一個猜數字遊戲。計算機随機生成一個數字,使用者猜測該數字值。計算機針對使用者的猜測結果報告“比這個數值小”,或者“比這個數值大”;直到使用者猜對了,提示“完全正确”。
    # 例16.8.py
    import random
    
    guess = 0
    result = random.randint(0, 100)
    time = 0
    while guess != result:
        time += 1
        guess = int(input('請輸入您的猜測值(0-100之間的整數):'))
        if guess > result:
            print('您的猜測比答案大')
        elif guess < result:
            print('您的猜測比答案小')
        else:
            print('預測' + str(time) + '次,你猜中了!')
            break      

    題目9:數值各位和

    随機生成一個三位數,計算其各個位上數值的和。

    例如,數值168其各位和為“1+6+8=15”。

    計算個位:使用求餘數“%”,計算得到。例如,168%10=8

    計算十位:使用求整除“//”和求餘數“%”,計算得到。例如,首先計算“168//10=16”,接下來計算“16%10=6”。

    計算百位:使用整除“//”,計算得到。例如,168//100=1

    主程式

    # 例16.9.1.py
    import random
    
    x = random.randint(100, 999)  # randint(a,b)生成的數值包含a也包含b
    gewei = x % 10
    shiwei = x // 10 % 10
    baiwei = x // 100
    sum = gewei + shiwei + baiwei
    print("随機數為:%d,其各個位上和為:%d" % (x, sum))      
    輸出結果:
    随機數為:339,其各個位上和為:15

    拓展:不同方式計算十位值

    計算十位,有兩種不同的方式:

    方式1:先取到前兩位,再取最低位。例如,【168//10=16,16%10=6】。

    方式2:先取到後兩位,再取最高位。例如,【168%100=68,68//10=6】。

    # 例16.9.2.py
    import random
    
    x = random.randint(100, 999)  # randint(a,b)生成的數值包含a也包含b
    x1 = x // 10 % 10
    x2 = x % 100 // 10
    print("随機數為:", x)
    print("使用方式1,其十位值為:", x1)
    print("使用方式2,其十位值為:", x2)      

    題目10:半徑和直徑互換

    設計一個程式, 當輸入一個半徑值時,輸出對應的直徑值;當輸入一個直徑值時,輸出對應的半徑值。

    知識點1:eval(232, 232, 232); background: rgb(249, 249, 249);">
    # 例16.10.1.py
    x = input('請輸入長度值:')
    y = eval(x)
    print(x + "5.3")
    print(y + 5)      

輸出結果如下:

請輸入長度值:1.1

1.15.3

6.1

知識點2:成員運算符

關鍵字in:

in:某個元素在集合内。例如:

# 例16.10.2.py
print("張三" in ["張三", "李四", "王五"])   #結果為:True
print("趙六" in ["張三", "李四", "王五"])   #結果為:False      

關鍵字not in:

not in:某個元素不在集合内。例如:

# 例16.10.2.py
print("張三" not in ["張三", "李四", "王五"])  # 結果為False
print("趙六" not in ["張三", "李四", "王五"])  # 結果為True      

主程式

# 例16.10.2.py
value = eval(input('請輸入長度值:'))
x = input('請輸入值的含義(r或d):')
if x in ['r', 'R', '半徑']:
    d = value * 2
    print('該半徑所對應的直徑值為:', d)
elif x in ['d', 'D', '直徑']:
    r = value / 2
    print('該直徑所對應的半徑值為:', r)
else:
    print('輸入錯誤!')      

輸入直徑值時,輸出結果如下:

請輸入長度值:10.2

請輸入值的含義(r或d):d

該直徑所對應的半徑值為: 5.1

輸入半徑值時,輸出結果如下:

請輸入長度值:2.5

請輸入值的含義(r或d):r

該半徑所對應的直徑值為: 5.0

說明

本版本為 1.0,完成于2021年10月6日。

嚴正聲明:本書可免費用于學習和研究目的,可自由傳播,但切勿擅自用 于商業用途或私自引用,筆者保留著作權相關權利。