程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python案例十講

編輯: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:半徑和直徑互換
        • 知識點1:eval函數
        • 知識點2:成員運算符
        • 主程序
      • 說明

題目1:分組示例

有100個人參加體能測試,將所有人隨機分成兩組,並統計每組的人數。

分組思路

計算機隨機生成100個值為1、2的隨機數,分配個每個人。每個人根據編號到所在組報道。

知識點1:隨機數

函數random:提供了進行隨機選擇的工具。

函數randint:生成指定范圍內的隨機數

語法:random.randint(a,b),生成在[a,b]之間的隨機整數。

【例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:
語句C

條件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),存在如下關系:
d a y 9 = ( d a y 10 + 1 ) ∗ 2 day_9=(day_{10}+1)*2 day9​=(day10​+1)∗2
實際上,依次類推往前推,每一天都是後一天加上1後的2倍。具體為:
d a y N − 1 = ( d a y N + 1 ) ∗ 2 day_{N-1}=(day_N+1)*2 dayN−1​=(dayN​+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)

輸出結果為:

0
1

當用戶輸入正確的用戶名和密碼後,不再需要循環了,要退出循環。

知識點3:與或關系

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

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

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(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】作為一個整體。

將上述代碼,用在一個循環體內,可以將上述代碼執行指定的次數。

# 例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個。

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

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

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

盒子(新值) = 盒子(原有值) + 1

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

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

盒子(新值) = 盒子(原有值) + 2

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

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

盒子(新值) = 盒子(原有值) + 3

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(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函數

eval函數將字符轉換為數值類型。

# 例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日。

聯系我們:[email protected]

如諸君認為本書對您略有幫助,不妨掃碼請筆者喝杯咖啡 .

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

關注公眾號【計算機視覺之光】,微信號【cvlight】,掃描關注獲取源代碼等更多資料。
在公眾號內回復關鍵字【python案例十講】獲取源代碼及PDF文件。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved