【每天学点Python】案例一:汇率换算

发布时间:2019-03-10 19:53:53编辑:auto阅读(3587)

    汇率换算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<参数列表>:<表达式>

    • 用于简单的、能够在一行内表示的函数,计算结果为返回值

     

关键字