案例(1):汇率兑换

本章通过汇率兑换的5个案例来进行学习基础的Python程序

案例描述

设计一个简单的汇率换算器程序,功能是能将外币转换成人民币或者相反
1.为了使程序简单,目前只考虑一种外币美元
2.新加功能:根据输入判断是人民币还是美元,进行相应的转换
3.新加功能:循环计算,输入Q退出循环
4.新加功能:通过调用函数减少荣域代码
5.新加功能:(1)结构化程序(2)将简单的函数转换为lambda函数

v1.0

根据问题描述,我们可以将这个分析称简单的输入、处理和输出(简称IPO),如下图:



在程序中可以通过input函数赋值给变量实现输入数据。
变量无须定义类型可以直接调用,而通常全大写表示常量,变量只能通过字母、数字和下划线来组成且不能数字开头。
知识点:
1.变量无须定义类型可以直接调用,而通常全大写表示常量,变量只能通过字母、数字和下划线来组成且不能数字开头。
2.input()函数实现输入数据,类型为字符串。eval()可以将字符串中的数字转换为整数型
3.print()实现输出数据
代码实现如下:

"""
    时间:2019年1月28日22:31:28
    功能v1.0:汇率换算
"""
# 汇率
USD_RATE = 6.77
# 输入人民币
rmb_str_value = input("请输入人民币金额:")
# 字符型换成整数型
rmb_value = eval(rmb_str_value)
# 计算美元金额
usd_value = rmb_value / USD_RATE
# 输出金额
print("换算成美元为:", usd_value)

v2.0

新增判断输入来对数据进行不同的处理。



知识点:
1.if elif else语句的使用,使用时记得带冒号“:”
2.数组的使用,通过[-3:]和[:-3]来取得倒数3位数据和顺数到倒数第3位的数据

ps:在程序中可以适当加判断来给程序处理不了的数据输出报错

"""
    时间:2019年1月28日22:31:28
    功能v1.0:汇率换算
    新增功能v2.0:美元人民币相互转换
"""
# 汇率
USD_RATE = 6.77
# 输入人民币
current_value = input("请输入带单位金额:")
# print(current_value[-3:])
# 获取种类
nuit = current_value[-3:]

if nuit == "CNY":
    # 字符型换成整数型
    rmb_value = eval(current_value[:-3])
    # 计算美元金额
    usd_value = rmb_value / USD_RATE
    # 输出金额
    print("换算成美元为:", usd_value)
elif nuit == "USD":
    # 字符串转换为整数型
    usd_value = eval(current_value[:-3])
    # 求人民币金额
    rmb_value = usd_value * USD_RATE
    # 输出金额
    print("换算成人民币:", rmb_value)
else:
    print("该版本尚未支持此货币转换汇率")

v3.0

在可以v2.0的基础上新增功能使用循环来多次换算货币,当用户确定要退出时输入设定值就可以退出。


知识点:
1.while语句,当条件符合就进入循环体,否则退出

"""
    时间:2019年1月28日22:31:28
    功能v1.0:汇率换算
    新增功能v2.0:美元人民币相互转换
    新增功能v3.0:循环计算,输入Q退出循环
"""
# 汇率
USD_RATE = 6.77

# 循环计数
while_count = 0
# 输入人民币
current_value = input("请输入带单位金额:(退出程序请按Q)")
# 输入Q退出循环
while current_value != "Q":
    # 循环一次就计数1次
    while_count = while_count + 1
    # print(current_value[-3:])
    # 获取种类
    nuit = current_value[-3:]

    if nuit == "CNY":
        # 字符型换成整数型
        rmb_value = eval(current_value[:-3])
        # 计算美元金额
        usd_value = rmb_value / USD_RATE
        # 输出金额
        print("换算成美元为:", usd_value)

    elif nuit == "USD":
        # 字符串转换为整数型
        usd_value = eval(current_value[:-3])
        # 求人民币金额
        rmb_value = usd_value * USD_RATE
        # 输出金额
        print("换算成人民币:", rmb_value)

    # 其他情况
    else:
        print("该版本尚未支持此货币转换汇率")

    print("*******************************")
    # 带货币单位的输入
    current_value = input("请输入带单位的金额:(退出程序请按Q)")

print("程序已退出")

v4.0

在v2.0基础上将计算金额封装成函数,使函数整洁



知识点:
1.函数定义语句:def <函数名>([参数1],[参数2]) :
2.形参和实参

"""
    时间:2019年1月28日22:31:28
    功能v1.0:汇率换算
    新增功能v2.0:美元人民币相互转换
    新增功能v3.0:循环计算,输入Q退出循环
    新增功能v4.0:通过调用函数减少荣域代码
"""


def count_money(im, cr):
    """
    通过汇率计算金额
    :param im:
    :param cr:
    :return:
    """
    out = im * cr
    return out


# 汇率
USD_RATE = 6.77

# 输入人民币
current_value = input("请输入带单位金额:")

# 获取种类
nuit = current_value[-3:]

if nuit == "CNY":
    # 计算人民币汇率
    current_rate = 1 / USD_RATE

elif nuit == "USD":
    # 计算美元汇率
    current_rate = USD_RATE

# 其他情况
else:
    current_rate = -1

if current_rate != -1:
    # 调用函数
    im_money = count_money(eval(current_value[:-3]), current_rate)
    print("兑换后的金额为:", im_money)

else:
    # 否则输出不支持
    print("该版本尚未支持此货币转换汇率")


v5.0

在v4.0的基础上新增:(1)结构化程序(2)将简单的函数转换为lambda函数
进一步将程序简洁和模块化,程序更加易读


知识点:
1.lambda函数用法:<> = lambda <> : <>,用处:lambda函数可以将一行简单的代码直接定义成函数
2.if name == 'main':
main()
这个代码实现在主程序执行时可运行主函数main

"""
    时间:2019年1月28日22:31:28
    功能v1.0:汇率换算
    新增功能v2.0:美元人民币相互转换
    新增功能v3.0:循环计算,输入Q退出循环
    新增功能v4.0:通过调用函数减少荣域代码
    新增功能v5.0:(1)结构化程序(2)将简单的函数转换为lambda函数
"""


def count_money(im, cr):
    """
    通过汇率计算金额
    :param im:
    :param cr:
    :return:
    """
    out = im * cr
    return out


def main():
    # 汇率
    USD_RATE = 6.77

    # 输入人民币
    current_value = input("请输入带单位金额:")

    # 获取种类
    nuit = current_value[-3:]

    if nuit == "CNY":
        # 计算人民币汇率
        current_rate = 1 / USD_RATE

    elif nuit == "USD":
        # 计算美元汇率
        current_rate = USD_RATE

    # 其他情况
    else:
        current_rate = -1

    if current_rate != -1:
        in_money = eval(current_value[:-3])

        # 调用函数

        # 定义简单的lambda函数
        count_money2 = lambda x: x * current_rate

        # 调用lambda函数
        out_money = count_money2(in_money)

        # out_money = count_money(eval(current_value[:-3]), current_rate)
        print("兑换后的金额为:", out_money)

    else:
        # 否则输出不支持
        print("该版本尚未支持此货币转换汇率")


if __name__ == '__main__':
    main()

完整代码请查看

你可能感兴趣的:(案例(1):汇率兑换)