汇率兑换/汇率兑换(5)

去社区提问

简介:本节课重点学习Python的while循环,让程序持续执行。

案例描述

欢迎来到今天的课堂~
上节课中,我们学习了分支语句,利用if条件判断实现了输入美元、人民币、其他类型货币三种不同情况时执行不同操作的功能。

本节课我们将学习编程中一个非常重要的概念:循环。并用它来将汇率兑换小程序的功能进一步完善。

之前的汇率兑换程序只支持用户输入一次金额,完成计算,可不可以让程序一直运行,直到用户选择退出时才结束呢?

答案当然是:可以!这节课就让我们一起来实现这个功能。

  • 循环重复执行汇率兑换功能,直到用户选择退出。
案例分析

在写程序之前先来梳理一下整体思路:

  1. 提示用户输入信息,可以选择输入货币金额或退出。
  1. 当用户输入货币金额时,执行步骤3;当用户选择退出时,结束程序。
  1. 进行条件判断,计算汇率。计算完成后返回步骤1。

我们可以把思路绘制成流程图来更清晰地显示每步的操作。

像这样反复执行相同操作时,就要用到循环

循环是指把一件事重复执行多次。计算机不怕苦不怕累,可以把无聊的事情重复上千遍,这也是编程解放人类的关键所在。

为什么计算机就特别擅长做重复性工作呢?

究其原理,其实是因为代码中的循环语句,让计算机能够重复性地、自动地执行指令。

下面就跟我一起来看看如何利用代码实现循环功能。

当然今天的内容依然要以上节课为基础,因此我们先来将上节课的代码做一个简单回顾。

首先确定汇率,并提示用户输入带单位的货币金额:

  1. #汇率
  2. usd_vs_rmb = 6.70
  3. #带单位的货币输入
  4. currency_str_value = input('请输入带单位的货币金额:')

然后利用区间索引取出字符串后三位的单位信息:

  1. #获取货币单位
  2. unit = 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)
  10. elif unit == 'USD':
  11. #输入是美元
  12. usd_str_value = currency_str_value[:-3]
  13. #将字符串转为数字
  14. usd_value = eval(usd_str_value)
  15. #汇率计算
  16. rmb_value = usd_value*usd_vs_rmb
  17. #输出结果
  18. print('人民币(CNY)金额是:',rmb_value)
  19. else:
  20. print('对不起,目前只支持输入人民币(CNY)和美元(USD)。')

接下来就在此基础上,对代码进行简单的添加修改,完成循环操作。

今天的功能中,用户可以自主选择继续进行汇率转换操作还是选择退出,因此在输入内容时,需要提示用户选择输入货币金额退出

首先来完成这段代码:

  1. #汇率
  2. usd_vs_rmb = 6.77
  3. #带单位的货币输入
  4. currency_str_value = input('请输入带单位的货币金额(输入Q退出):')

下面就可以根据用户的输入来判断是否进入循环,这个判断条件是决定循环能否进行下去的关键因素。

本节课我们先为大家介绍一种常用的循环语句:while循环。它的具体使用方法如下:

当满足循环条件时,执行循环体,也就是语句块1的内容;当条件不满足时,退出循环。

其实这个逻辑非常好理解,举一个生活中的简单例子~

胖丫给自己立下了减肥的flag,计划每天减轻0.5斤,在体重低于110斤之前,每天都坚持不吃晚饭。

在这个例子中,

判断条件:体重大于110斤

循环内容:不吃晚饭,体重减轻0.5斤

把减肥的案例按照while循环的格式,就应该写为:

当胖丫的体重大于110斤时,进入循环,执行不吃晚饭且体重减轻0.5斤。再用减轻后的体重数来判断是否仍然大于110斤,大于则再次进入循环。直到体重小于110斤时,结束循环。

了解过上面胖丫减肥的简单案例,我们同样可以把它类比到汇率兑换的程序上来。

首先让我们一起找到循环判断条件循环体的内容。

在汇率兑换程序中,循环能持续进行下去的条件是:用户不选择退出,即输入的currency_str_value不等于Q

进入循环后,就执行我们之前完成的分支结构,对货币种类进行判断,输出相应结果。

按照这个思路来继续书写代码。当满足循环条件时,执行的操作也就是上节课我们学习过的分支语句,判断货币种类,计算汇率结果。只需要把它们复制过来,写进循环体就大功告成了~

别忘记循环体内的代码块都需要向后缩进,你可以选中要缩进的内容,按tab键,就能一次性将它们向后缩进,不需要每行逐一操作。

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

这样一来,我们好像就完成了循环结构的书写,来运行查看下结果~

啊偶,看来结果并不如我们预想的那样完美,程序陷入了死循环。为什么会出现这样的情况呢?

上面代码运行后,程序反复对我们输入的货币进行汇率转换,而没有结束程序的出口,进入了一种死循环状态。

还记得刚才我们设置了进入循环的判断条件吗?一定是循环条件持续满足,才会导致程序反复执行。

当用户第一次输入了带单位的货币金额,满足循环条件,进入循环体,执行汇率转换操作,完成计算后会再此对循环条件进行判断,由于变量currency_str_value的值没有改变,依然满足循环执行条件currency_str_value != 'Q',就会再一次进入循环进行计算。如此反复下去,就出现我们刚才运行产生的死循环状况了。

为了解决这个问题,就需要在循环内部,对循环判断条件涉及的关键变量进行修改,才能在进入下一次循环前重新完成判断。在本案例中,就要对currency_str_value的值做改变。

在循环内部添加一行语句,提示用户重新输入。

当用户选择退出时,我们同样希望添加一行提示语句,告知用户‘程序已经退出’。

现在再来运行代码看看效果~

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

我们终于利用循环实现了重复操作功能,一起来总结一下本节课的知识点~

  • 循环的概念

循环是把一件事反复执行多次,代码中的循环语句可以让计算机重复性、自动性的完成任务。

  • while循环的使用方法
下节预告

这节课为止我们就顺利完成了汇率兑换案例的全部内容,是不是收获满满呢?下节课开始我们将学习一个新的案例,先剧透一下,下一个案例的内容和我们每个人的生活息息相关~能帮助你向通往健康生活和减肥的道路上加个速。

如果你想获取更多Python相关资料,和更多同学一起交流学习,欢迎添加班主任老师微信,我们下节课不见不散哦。

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

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

汇率兑换 1/3

汇率兑换(5)

1.0x

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

行动力超过

累计学习

学习下一课时