汇率兑换/汇率兑换(4)

去社区提问

简介:本节课学习Python中的分支结构,完成汇率计算程序的最终实现。

案例描述

Hi~欢迎来到课堂,经过几节课的努力,今天我们终于可以把汇率兑换小程序完成啦,快和我一起开始今天的学习!

今天的程序,将完成自动判断输入货币类型,并完成转换的功能。

上节课中我们已经了解到如何获取货币单位,今天就继续来完善汇率兑换程序。获取到单位后,下一步就要做判断,根据单位判断输入的是美元还是人民币,并做相应计算操作。计算机中我们把这样的情况叫做:分支,用来解决类似的‘岔路口’问题。

案例分析

和前几节课一样,我们还是先来整理一下思路。

根据单位判断输入的是人民币(CNY)还是美元(USD),再执行不同操作:

如果单位为人民币CNY:

输入金额/汇率=对应的美元金额,最后输出美元金额;

如果单位为美元USD:

输入金额*汇率=对应的人民币金额,输出人民币金额。

这两种情况在Python中应该如何解决?英语中表示’如果’的单词是if,’如果不满足’就是else和else if,Python分支语句中我们也需要用到它们,下面就来详细介绍一下分支语句

分支语句

概念

分支语句是用来控制程序的语句,它可以根据条件选择程序的执行路径,使程序实现不同条件下的对应操作。

使用方法

分支语句有固定的格式,使用时只需要把自定义内容,例如条件、具体操作等填写进去就可以。

这种语句是用来控制程序执行的,根据判断条件选择程序的执行路径,判断条件可以由自己指定。

在汇率兑换的案例中,
<条件1>即货币单位为人民币CNY,执行一系列操作;
<条件2>货币单位是美元USD,执行另外的操作。
下面我们就根据这样的结构,完成上节课的条件判断。先来回顾一下上节课的代码:

  1. #汇率
  2. usd_vs_rmb = 6.70
  3. #带单位的货币输入
  4. currency_str_value = input('请输入带单位的货币金额:')
  5. #获取货币单位
  6. unit = currency_str_value[-3:]
  7. print(unit)

货币单位已经获取并放在了变量unit中,现在来写第一个条件分支。
if后的条件:unit等于CNY,等于号在之前的课程中我们讲到过,它的功能是赋值,如果我们写成unit='CNY'代表的含义就是将字符串CNY赋值给unit这个变量。

Python中双等号==代表的才是等于的含义,这一点希望你牢牢记住,很多同学都会在这里犯错误~

  1. if unit == 'CNY':

类比同样的方法写出条件2.

  1. elif unit == 'USD':

缩进

当满足条件时,需要执行的一系列操作写在同一个代码块中,Python中使用缩进来区分代码块,所有被缩进的语句都属于上面的条件,在满足的情况下都要执行。

缩进通常是一个tab键或四个空格,用来表示代码中的层次关系。敲击一次tab键就代表一个缩进。

接下来我们就来完善输入为人民币时执行的操作。

  • 取出输入货币金额

  • 将字符串转换为数字

  • 完成汇率计算

  • 打印出结果

获得货币金额这一步要用到字符串的操作,先来简单回忆一下~

利用反向索引从-3到末尾我们可以拿到’CNY’,如果想得到100,是从开头向后取三个数吗?
如果输入的是’20CNY’或者’1234CNY’显然就行不通了。其实我们可以倒着来看,单位信息不论是’USD’还是’CNY’都占据最后三位字符,想要获得前面的内容可以从0位置开始,一直取到-3,其中0可以省略不写。

  1. if unit == 'CNY':
  2. #输入的是人民币
  3. rmb_str_value = currency_str_value[:-3]

下面的类型转换、计算、输出你应该非常熟悉了,一起来把功能补充完整:

  1. if unit == 'CNY':
  2. #输入的是人民币
  3. rmb_str_value = currency_str_value[:-3]
  4. #将字符串转为数字
  5. rmb_value = eval(rmb_str_value)
  6. #汇率计算
  7. usd_value = rmb_value / usd_vs_rmb
  8. #输出结果
  9. print('美元(USD)金额是:',usd_value)

这样一来就完成了第一个条件分支的书写,对照上面的代码再来完成下一个分支结构,当货币单位是美元时执行的操作:

  1. elif unit == 'USD':
  2. #输入是美元
  3. usd_str_value = currency_str_value[:-3]
  4. #将字符串转为数字
  5. usd_value = eval(usd_str_value)
  6. #汇率计算
  7. rmb_value = usd_value * usd_vs_rmb
  8. #输出结果
  9. print('人民币(CNY)金额是:',rmb_value)

需要注意的是在这里输入的是美元,输出人民币,因此在汇率计算是需要用美元金额*汇率,得到结果。

这样就完成了本节课的任务,实现人民币和美元汇率转换,来运行代码检验一下效果:

  1. #汇率
  2. usd_vs_rmb = 6.70
  3. #带单位的货币输入
  4. currency_str_value = input('请输入带单位的货币金额:')
  5. #获取货币单位
  6. unit = currency_str_value[-3:]
  7. if unit == 'CNY':
  8. #输入的是人民币
  9. rmb_str_value = currency_str_value[:-3]
  10. #将字符串转为数字
  11. rmb_value = eval(rmb_str_value)
  12. #汇率计算
  13. usd_value = rmb_value / usd_vs_rmb
  14. #输出结果
  15. print('美元(USD)金额是:',usd_value)
  16. elif unit == 'USD':
  17. #输入是美元
  18. usd_str_value = currency_str_value[:-3]
  19. #将字符串转为数字
  20. usd_value = eval(usd_str_value)
  21. #汇率计算
  22. rmb_value = usd_value*usd_vs_rmb
  23. #输出结果
  24. print('人民币(CNY)金额是:',rmb_value)

现在请你思考,我们的程序还存在什么问题?假设用户输入的货币不是美元或人民币,会出现怎样的情况?现在就来运行试试:

可以看到输入澳元50AUD后程序没有反应了,那是因为在程序中我们给出色两个条件分支分别是unit=='CNY'unit=='USD'。没有告诉计算机当单位是’AUD’以及其他情况时应该怎么办。

除条件分支外的情况,如果我们需要一个统一的处理方法,就可以用到else:

  1. else:
  2. print('对不起!目前只支持输入人民币(CNY)和美元(USD)。')

下面再来输入一个澳元金额看看:

  1. #汇率
  2. usd_vs_rmb = 6.70
  3. #带单位的货币输入
  4. currency_str_value = input('请输入带单位的货币金额:')
  5. #获取货币单位
  6. unit = currency_str_value[-3:]
  7. if unit == 'CNY':
  8. #输入的是人民币
  9. rmb_str_value = currency_str_value[:-3]
  10. #将字符串转为数字
  11. rmb_value = eval(rmb_str_value)
  12. #汇率计算
  13. usd_value = rmb_value / usd_vs_rmb
  14. #输出结果
  15. print('美元(USD)金额是:',usd_value)
  16. elif unit == 'USD':
  17. #输入是美元
  18. usd_str_value = currency_str_value[:-3]
  19. #将字符串转为数字
  20. usd_value = eval(usd_str_value)
  21. #汇率计算
  22. rmb_value = usd_value*usd_vs_rmb
  23. #输出结果
  24. print('人民币(CNY)金额是:',rmb_value)
  25. else:
  26. print('对不起,目前只支持输入人民币(CNY)和美元(USD)。')
本关总结

总结一下今天的知识点:

  • 分支语句
  • 缩进

Python中使用缩进来区分代码块,缩进通常是四个空格或一个tab键。

下节预告

本节课就到这里啦,后续的课程中会有更多精彩等着你~

后续精彩内容:

办公自动化 自动合并Excel文件

批量生成邀请函,自动发送邮件

数据分析实操项目

爬虫案例

人工智能案例 人像动漫画

……

想要获取课程代码资料包,免费使用线上练习环境,和更多同学一起交流学习,快添加班主任老师的微信吧~

扫描二维码添加班主任微信

已经添加过班主任的同学,可以直接联系对应老师,无需重复添加哦。

汇率兑换 1/3

汇率兑换(4)

1.0x

恭喜完成本课时的学习!
坚持学习

行动力超过

累计学习

学习下一课时