【每天學點Python】案例一:匯率換算


匯率換算V1.0

案例描述:

設計一個匯率換算器程序,其功能是將外幣換算成人民幣,或者相反

案例分析:

分析問題:分析問題的計算部分;

確定問題:將問題划分為輸入、處理及輸出部分;

設計算法:計算部分的核心(輸出 = 輸入 / 匯率);

上機實驗:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # author: Kevin.Wang
 4 # time  : 2018/9/13
 5 
 6 rmb_str_value = input('請輸入人民幣(CNY)金額:')
 7 rmb_value = eval(rmb_str_value)
 8 usd_vs_rmb = 6.77
 9 usd_value = rmb_value / usd_vs_rmb
10 print('美元(USD)金額是:',usd_value)
View Code

 補充說明:

1. 多行注釋:“”“……”“”

1 # 多行注釋
2 """
3     作者:王鑫正
4     功能:匯率兌換
5     版本:1.0
6     日期:2018/9/14
7 """
View Code

2. 查看Python關鍵字方法:

1 import keyword
2 print(keyword.kwlist)
View Code

 


V2.0增加功能:

案例描述:

根據輸入判斷是人民幣還是美元,進行相應的轉換計算

案例分析:

輸入:帶單位的貨幣金額

上機實驗:

 1 """
 2     作者:王鑫正
 3     功能:匯率兌換
 4     版本:2.0
 5     日期:2018/9/14
 6     新增功能:根據輸入判斷是人民幣還是美元,進行相應的轉換計算
 7 """
 8 
 9 # 匯率
10 usd_vs_rmb = 6.77
11 
12 # 帶單位的貨幣的輸入
13 currency_str_value = input('請輸入帶單位的貨幣金額:')
14 
15 # 獲取貨幣單位
16 unit = currency_str_value[-3:]
17 
18 if unit == 'CNY':
19     # 輸入的是人民幣
20     rmb_str_value = currency_str_value[:-3]
21     # 將字符串轉換為數字
22     rmb_value = eval(rmb_str_value)
23     # 匯率計算
24     usd_value = rmb_value / usd_vs_rmb
25     # 輸出結果
26     print('美元(USD)金額是:', usd_value)
27 
28 elif unit == 'USD':
29     # 輸入的是美元
30     usd_str_value = currency_str_value[:-3]
31     # 將字符串轉換為數字
32     usd_value = eval(usd_str_value)
33     # 匯率計算
34     rmb_value = usd_value * usd_vs_rmb
35     # 輸出結果
36     print('人民幣(CNY)金額是:', rmb_value)
37 
38 else:
39     # 其他情況
40     print('該程序目前版本尚不支持該種貨幣!')
View Code

補充說明:

1. 字符串索引:

  ①. 正向索引(從左向右,以0開始):

1 s = 'PYTHON'
2 s[2] # 獲取s的第2個字符
View Code

  ②. 負向索引(從右向左,以-1開始):

1 s = 'PYTHON'
2 s[-4] # 獲取s的倒數第4個字符
View Code

  ③. 區間索引([A:B],從位置A到B的部分字符串,不包含位置B):

     記憶方法:獲取字符串長度為B-A

1 s = 'PYTHON'
2 s[0:3]     # 正向獲取第一個到第三個字符串
3 s[:3]       # 從0開始,0可以省略
4 s[-3:-1]  # 負向獲取倒數第二到倒數第一個字符串
5 s[-3:]     # 負向到末尾,-1可以省略
View Code

 


V3.0增加功能:

案例描述:

程序可以一直運行,知道用戶選擇退出

案例分析:

使用循環語句while

上機實驗:

 1 """
 2     作者:王鑫正
 3     功能:匯率兌換
 4     版本:2.0
 5     日期:2018/9/14
 6     新增功能:
 7     2.0 根據輸入判斷是人民幣還是美元,進行相應的轉換計算
 8     3.0 程序可以一直運行,知道用戶選擇退出
 9 """
10 
11 # 匯率
12 usd_vs_rmb = 6.77
13 
14 # 帶單位的貨幣的輸入
15 currency_str_value = input('請輸入帶單位的貨幣金額(退出程序請輸入Q):')
16 
17 i = 0
18 
19 while currency_str_value != 'Q':
20     i = i + 1
21     print('循環次數', i)
22 
23     # 獲取貨幣單位
24     unit = currency_str_value[-3:]
25 
26     if unit == 'CNY':
27         # 輸入的是人民幣
28         rmb_str_value = currency_str_value[:-3]
29         # 將字符串轉換為數字
30         rmb_value = eval(rmb_str_value)
31         # 匯率計算
32         usd_value = rmb_value / usd_vs_rmb
33         # 輸出結果
34         print('美元(USD)金額是:', usd_value)
35 
36     elif unit == 'USD':
37         # 輸入的是美元
38         usd_str_value = currency_str_value[:-3]
39         # 將字符串轉換為數字
40         usd_value = eval(usd_str_value)
41         # 匯率計算
42         rmb_value = usd_value * usd_vs_rmb
43         # 輸出結果
44         print('人民幣(CNY)金額是:', rmb_value)
45 
46     else:
47         # 其他情況
48         print('該程序目前版本尚不支持該種貨幣!')
49 
50     print('\n****************************************')
51     # 帶單位的貨幣的輸入
52     currency_str_value = input('請輸入帶單位的貨幣金額(退出程序請輸入Q):')
53 
54 print('程序已退出')
View Code

 


V4.0增加功能:

案例描述:

將匯率兌換功能封裝到函數中

案例分析:

判斷貨幣種類,匯率轉化,調用匯率兌換函數

上機實驗:

 1 """
 2     作者:王鑫正
 3     功能:匯率兌換
 4     版本:2.0
 5     日期:2018/9/14
 6     新增功能:
 7     2.0 根據輸入判斷是人民幣還是美元,進行相應的轉換計算
 8     3.0 程序可以一直運行,知道用戶選擇退出
 9     4.0 將匯率兌換功能封裝到函數中
10 """
11 
12 
13 def convert_currency(im, er):
14     """
15         匯率兌換函數
16     """
17     out = im * er
18     return out
19 
20 
21 # 匯率
22 usd_vs_rmb = 6.77
23 
24 # 帶單位的貨幣的輸入
25 currency_str_value = input('請輸入帶單位的貨幣金額:')
26 
27 # 獲取貨幣單位
28 unit = currency_str_value[-3:]
29 
30 if unit == 'CNY':
31     exchange_rate = 1 / usd_vs_rmb
32 
33 elif unit == 'USD':
34     exchange_rate = usd_vs_rmb
35 
36 else:
37     exchange_rate = -1
38     # # 其他情況
39     # print('該程序目前版本尚不支持該種貨幣!')
40 
41 if exchange_rate != -1:
42     in_money = eval(currency_str_value[:-3])
43     # 調用函數
44     out_money = convert_currency(in_money, exchange_rate)
45     print('轉換后的金額:', out_money)
46 
47 else:
48     print('不支持該種貨幣!')
View Code

補充說明:

1. 函數:

  • 將特定功能代碼編寫在一個函數里
  • 便於閱讀和復用
  • 對一組表達特定功能表達式的封裝
  • 使程序模塊化
  • Python內置函數:input(),print(),eval()...

2. 函數的定義

  def <函數名>(<參數列表>):

    <函數體>

    return <返回值列表>

3. 函數的調用過程

  • 調用程序在調用函數處暫停執行
  • 調用時將參數(實參)賦值給函數的參數(形參)
  • 執行函數體
  • 返回函數結果,回到調用處繼續執行

 


V5.0增加功能:

1. 程序結構化

2. 簡單函數的定義,lambda函數

上機實驗:

 1 """
 2     作者:王鑫正
 3     功能:匯率兌換
 4     版本:2.0
 5     日期:2018/9/14
 6     新增功能:
 7     2.0 根據輸入判斷是人民幣還是美元,進行相應的轉換計算
 8     3.0 程序可以一直運行,知道用戶選擇退出
 9     4.0 將匯率兌換功能封裝到函數中
10     5.0 (1) 程序結構化 (2) 簡單函數的定義 lambda
11 
12 """
13 
14 
15 # def convert_currency(im, er):
16 #     """
17 #         匯率兌換函數
18 #     """
19 #     out = im * er
20 #     return out
21 
22 
23 def main():
24     """
25         主函數
26     """
27     # 匯率
28     usd_vs_rmb = 6.77
29 
30     # 帶單位的貨幣的輸入
31     currency_str_value = input('請輸入帶單位的貨幣金額:')
32 
33     # 獲取貨幣單位
34     unit = currency_str_value[-3:]
35 
36     if unit == 'CNY':
37         exchange_rate = 1 / usd_vs_rmb
38 
39     elif unit == 'USD':
40         exchange_rate = usd_vs_rmb
41 
42     else:
43         exchange_rate = -1
44 
45     if exchange_rate != -1:
46         in_money = eval(currency_str_value[:-3])
47         # 使用lambda定義函數
48         convert_currency2 = lambda x: x*exchange_rate
49 
50         # # 調用函數
51         # out_money = convert_currency(in_money, exchange_rate)
52 
53         # 調用lambda函數
54         out_money = convert_currency2(in_money)
55         print('轉換后的金額:', out_money)
56 
57     else:
58         print('不支持該種貨幣!')
59 
60 
61 if __name__ == '__main__':
62     main()
View Code

補充說明:

1. lambda函數:

  • 特殊函數---匿名函數
  • 使用方法:

    <函數名> = lambda<參數列表>:<表達式>

  • 用於簡單的、能夠在一行內表示的函數,計算結果為返回值

 


免責聲明!

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



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