1. 程式人生 > >小象學院Python入門基礎課程-四、案例1 匯率兌換 案例分析

小象學院Python入門基礎課程-四、案例1 匯率兌換 案例分析

在這裡插入圖片描述

匯率兌換 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 空氣質量指數)