小象學院Python入門基礎課程-四、案例1 匯率兌換 案例分析
阿新 • • 發佈:2018-11-08
匯率兌換 1.0(只考慮一種外幣情況)
案例描述
案例分析
上機實驗
""" 作者:xpt 功能:匯率兌換 版本號:1.0 日期:05/11/2018 """ # 人名幣的輸入 rmb_str_value = input('請輸入人民幣(CNY)金額:') # 將字串轉換為數字 rmb_value = eval(rmb_str_value) # 匯率 USD_VS_RMB = 6.77 # 匯率計算 usd_value = rmb_value / USD_VS_RMB print('美元金額為', usd_value)
• 能否根據輸入的貨幣判斷是人民幣還是美元,然後進行相應的轉換?
匯率兌換 2.0(增加功能:根據輸入判斷是人民幣還是美元,進行相應的轉換計算)
1、要取單位:取後三位
涉及到字串的操作(見Python語言的基本語法https://blog.csdn.net/qq_34243930/article/details/83748085)
2、 如何實現分支結構?
分支語句if else
先寫框架:用pass佔位
""" 作者:xpt 功能:匯率兌換 版本號:2.0 日期:05/11/2018 新增功能:根據輸入判斷是人民幣還是美元,進行相應的轉換計算 """ # 匯率 USD_VS_RMB = 6.77 # 帶單位的貨幣輸入 currency_str_value = input('請輸入帶單位的貨幣金額:') # 獲取貨幣單位 unit = currency_str_value[-3:] if unit == 'CNY': # 輸入的是人民幣 rmb_str_value = currency_str_value[:-3] # 將字串轉換為數字 rmb_value = eval(rmb_str_value) # 匯率計算 usd_value = rmb_value / USD_VS_RMB # 輸出結果 print('美元金額(USD)為', usd_value) elif unit == 'USD': # 輸入的是美元 usd_str_value = currency_str_value[:-3] # 將字串轉換為數字 usd_value = eval(usd_str_value) # 匯率計算 rmb_value = usd_value * USD_VS_RMB # 輸出結果 print('人民幣(CNY)金額為', rmb_value) else: # 其他情況 print("目前版本尚不支援該種貨幣")
• 能否使程式一直執行,直到使用者選擇退出?
匯率兌換 3.0(增加功能:程式可以一直執行,直到使用者選擇退出)
1、用迴圈語句來實現
2、注意迴圈體裡也要在最後讓使用者輸入!!
迴圈語句while
迴圈要有條件,不然就是死迴圈了。
while 後條件沒有括號!!!加冒號!!!
""" 作者:xpt 功能:匯率兌換 版本號:3.0 日期:05/11/2018 新增功能2.0:根據輸入判斷是人民幣還是美元,進行相應的轉換計算 增加功能3.0:程式可以一直執行,直到使用者選擇退出 """ # 匯率 USD_VS_RMB = 6.77 # 帶單位的貨幣輸入 currency_str_value = input('請輸入帶單位的貨幣金額(退出程式請輸入Q):') while currency_str_value != 'Q': # 獲取貨幣單位 unit = currency_str_value[-3:] if unit == 'CNY': # 輸入的是人民幣 rmb_str_value = currency_str_value[:-3] # 將字串轉換為數字 rmb_value = eval(rmb_str_value) # 匯率計算 usd_value = rmb_value / USD_VS_RMB # 輸出結果 print('美元金額(USD)為', usd_value) elif unit == 'USD': # 輸入的是美元 usd_str_value = currency_str_value[:-3] # 將字串轉換為數字 usd_value = eval(usd_str_value) # 匯率計算 rmb_value = usd_value * USD_VS_RMB # 輸出結果 print('人民幣(CNY)金額為', rmb_value) else: # 其他情況 print("目前版本尚不支援該種貨幣") print('*******************************************') currency_str_value = input('請輸入帶單位的貨幣金額(退出程式請輸入Q):') print('程式已退出')
• 如果程式中多次用到兌換功能,程式碼量會增加,如何簡化?
匯率兌換4.0(將匯率兌換功能封裝到函式中)
函式
"""
作者:xpt
功能:匯率兌換
版本號:4.0
日期:05/11/2018
新增功能2.0:根據輸入判斷是人民幣還是美元,進行相應的轉換計算
增加功能3.0:程式可以一直執行,直到使用者選擇退出
增加功能4.0:將匯率兌換功能封裝到函式中
"""
def convert_currency(im, er):
"""
匯率兌換函式
"""
out = im*er
return out
# 匯率
USD_VS_RMB = 6.77
# 帶單位的貨幣輸入
currency_str_value = input('請輸入帶單位的貨幣金額:')
# 獲取貨幣單位
unit = currency_str_value[-3:]
if unit == 'CNY':
exchange_rate= 1 / USD_VS_RMB
elif unit == 'USD':
exchange_rate = USD_VS_RMB
else:
# 其他情況
exchange_rate = -1
if exchange_rate != -1:
in_money = eval(currency_str_value[:-3])
# 呼叫函式
out_money=convert_currency(in_money, exchange_rate)
print('轉換後的金額:', out_money)
else:
print('不支援該種貨幣!')
• 如果複用的功能很簡單(一句話能完成任務),是否有更簡潔的寫法?
匯率兌換5.0(增加功能:1、使程式結構化;2、將簡單的函式改造成lambda函式)
1、使程式結構化;
呼叫main()函式:
注意:都是兩個下劃線!!!
"""
作者:xpt
功能:匯率兌換
版本號:5.0
日期:05/11/2018
新增功能2.0:根據輸入判斷是人民幣還是美元,進行相應的轉換計算
增加功能3.0:程式可以一直執行,直到使用者選擇退出
增加功能4.0:將匯率兌換功能封裝到函式中
增加功能5.0:(1)使程式結構化
(2)
"""
def convert_currency(im, er):
"""
匯率兌換函式
"""
out = im*er
return out
def main():
"""
主函式
"""
# 匯率
USD_VS_RMB = 6.77
# 帶單位的貨幣輸入
currency_str_value = input('請輸入帶單位的貨幣金額:')
# 獲取貨幣單位
unit = currency_str_value[-3:]
if unit == 'CNY':
exchange_rate= 1 / USD_VS_RMB
elif unit == 'USD':
exchange_rate = USD_VS_RMB
else:
# 其他情況
exchange_rate = -1
if exchange_rate != -1:
in_money = eval(currency_str_value[:-3])
# 呼叫函式
out_money=convert_currency(in_money, exchange_rate)
print('轉換後的金額:', out_money)
else:
print('不支援該種貨幣!')
# 呼叫main()函式
if __name__ == '__main__':
main()
2、將簡單的函式改造成lambda函式
lambda函式
"""
作者:xpt
功能:匯率兌換
版本號:5.0
日期:05/11/2018
新增功能2.0:根據輸入判斷是人民幣還是美元,進行相應的轉換計算
增加功能3.0:程式可以一直執行,直到使用者選擇退出
增加功能4.0:將匯率兌換功能封裝到函式中
增加功能5.0:(1)使程式結構化
(2)將簡單的函式改造成lambda函式
"""
def main():
"""
主函式
"""
# 匯率
USD_VS_RMB = 6.77
# 帶單位的貨幣輸入
currency_str_value = input('請輸入帶單位的貨幣金額:')
# 獲取貨幣單位
unit = currency_str_value[-3:]
if unit == 'CNY':
exchange_rate= 1 / USD_VS_RMB
elif unit == 'USD':
exchange_rate = USD_VS_RMB
else:
# 其他情況
exchange_rate = -1
if exchange_rate != -1:
in_money = eval(currency_str_value[:-3])
# 使用lambda定義函式
convert_currency = lambda x: x*exchange_rate
# 呼叫lambda函式
out_money=convert_currency(in_money)
print('轉換後的金額:', out_money)
else:
print('不支援該種貨幣!')
# 呼叫main()函式
if __name__ == '__main__':
main()
思考:
• 能否儲存多個貨幣的匯率,而不是單一的匯率?
• 能否獲取實時的匯率?
提示:
• Python中的集合操作(案例5 判斷第幾天)
• 網路爬蟲(案例8 空氣質量指數)