匯率換算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)
補充說明:
1. 多行注釋:“”“……”“”

1 # 多行注釋 2 """ 3 作者:王鑫正 4 功能:匯率兌換 5 版本:1.0 6 日期:2018/9/14 7 """
2. 查看Python關鍵字方法:

1 import keyword 2 print(keyword.kwlist)
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('該程序目前版本尚不支持該種貨幣!')
補充說明:
1. 字符串索引:
①. 正向索引(從左向右,以0開始):

1 s = 'PYTHON' 2 s[2] # 獲取s的第2個字符
②. 負向索引(從右向左,以-1開始):

1 s = 'PYTHON' 2 s[-4] # 獲取s的倒數第4個字符
③. 區間索引([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可以省略
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('程序已退出')
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('不支持該種貨幣!')
補充說明:
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()
補充說明:
1. lambda函數:
- 特殊函數---匿名函數
- 使用方法:
<函數名> = lambda<參數列表>:<表達式>
- 用於簡單的、能夠在一行內表示的函數,計算結果為返回值