52周存钱挑战/52周存钱挑战(3)

去社区提问

简介:52周存钱挑战3.0版本,使用for循环完成计算。

案例描述

欢迎来到今天的课堂~

今天这节课我们将一起完成52周存钱挑战小程序的3.0版本。

按照52周存钱法则,每周存入的金额需要依次递增(第一周10元,第二周20元,第三周30元…依此类推)。

每周都要执行上面相同的操作,对于这样的重复性任务,交给while循环来做再合适不过了~

在while循环中,我们需要一个变量i来记录周数,当周数i<=52时,进入循环。

今天我将为你介绍神奇的:for循环,它能在循环中直接计数,不需要再设置周数i用于判断是否进入循环,让程序变得更加简洁。

案例分析

使用for语句可以循环遍历所有序列的内容。例如我们之前学习过的字符串、列表都可以使用for循环来对里面的元素进行遍历操作。

下面我们来了解一下for循环的语法结构:

其中x被称作循环变量,它在每次循环中被赋值成对应的元素,来看下面这个简单的例子:

代码练习:

编程区

  1. for x in 'python':
  2. print(x)

终端区

使用for循环遍历打印字符串'python',x会在每次循环中依次被赋值为字符串中的元素,然后进入循环,执行print()语句,将元素打印出来。直到字符串的末尾,循环自动结束。

其中循环变量,也就是上面例子中的x。它只在循环的过程中充当一个‘临时演员’,依次扮演完序列中的所有角色后就悄悄离场了,它甚至只是待遍历序列中每个主角的‘分身’,它的姓名可以是x也可以是abi等任意元素。

明白了上面循环遍历序列的方法,下面再尝试用for循环打印列表中的每个元素:

代码练习:

编程区

  1. l = ['小明','胖虎','二丫']
  2. for i in l:
  3. print(x)

终端区

发现了吗?这个小例子中,我们的‘临时演员’名字是i

除此之外,for循环还有另一种常用形式:

  1. for i in range(n):

其中range(n)返回一个可迭代的对象。 举一个简单的例子:

代码练习:

编程区

  1. for i in range(3):
  2. print(i)

终端区

range()括号中的3,代表共循环三次。计算机中的数字是从0开始计数的,因此循环变量i先被赋值为0;每经过一次循环,i的值就会被自增1。

从上面的例子中可以发现,利用for循环可以非常轻松地为程序设置循环次数,并且不需要像while循环一样额外定义循环变量,用来计数。

理解了上面的内容,我们就可以用for循环改造存钱挑战的代码了~

先来回顾我们之前使用while循环完成的代码:

  1. # 导入模块
  2. import math
  3. money_per_week = 10 # 每周存入的金额
  4. i = 1 # 记录周数
  5. increase_money = 10 # 递增的金额
  6. total_week = 52 # 总共的周数
  7. saving = 0 # 账户累计
  8. money_list = [] # 记录每周存款数的列表
  9. while i <= total_week:
  10. # 向列表添加元素
  11. money_list.append(money_per_week)
  12. #存钱操作
  13. saving = math.fsum(money_list)
  14. # 输出信息
  15. print('第{}周,存入{}元,账户累计{}元'.format(i, money_per_week, saving))
  16. # 更新下一周的存钱金额
  17. money_per_week += increase_money
  18. i += 1

总存钱周数是52,因此总循环次数也应该为52,周数信息储存在变量total_week中。我们用一行for语句来实现效果,你可以自己先思考为了满足存钱挑战程序的要求,range()括号中应该写入什么内容?

  1. for week in range():

下面来揭晓答案~你答对了吗?

  1. for week in range(total_week):

用这行代码替换原程序中的while语句。

由于for循环自带计数功能,循环变量week会依次等于0-51这52个数字,原本程序中记录周数的变量i就可以从舞台消失了~

与此同时,格式化输出的周数信息也应该替换为循环变量week:

现在我们来运行程序看看结果~

代码练习:

编程区

  1. # 导入模块
  2. import math
  3. money_per_week = 10 # 每周存入的金额
  4. increase_money = 10 # 递增的金额
  5. total_week = 52 # 总共的周数
  6. saving = 0 # 账户累计
  7. money_list = [] # 记录每周存款数的列表
  8. for week in range(total_week):
  9. # 向列表添加元素
  10. money_list.append(money_per_week)
  11. #存钱操作
  12. saving = math.fsum(money_list)
  13. # 输出信息
  14. print('第{}周,存入{}元,账户累计{}元'.format(week, money_per_week, saving))
  15. # 更新下一周的存钱金额
  16. money_per_week += increase_money

终端区

有没有发现周数的信息好像出了点小问题?由于循环是从0开始计数,共循环52次,循环变量week依次等于0-51中的所有数字。为了让周数显示正确,在打印时,需要给week的每个值+1:

代码练习:

编程区

  1. # 导入模块
  2. import math
  3. money_per_week = 10 # 每周存入的金额
  4. increase_money = 10 # 递增的金额
  5. total_week = 52 # 总共的周数
  6. saving = 0 # 账户累计
  7. money_list = [] # 记录每周存款数的列表
  8. for week in range(total_week):
  9. # 向列表添加元素
  10. money_list.append(money_per_week)
  11. #存钱操作
  12. saving = math.fsum(money_list)
  13. # 输出信息
  14. print('第{}周,存入{}元,账户累计{}元'.format(week+1, money_per_week, saving))
  15. # 更新下一周的存钱金额
  16. money_per_week += increase_money

终端区

这样一来就得到正确的结果啦~

本关总结

下面让我们一起来总结一下今天的重点知识:

  • for循环
  • for循环与while循环的区别

<img src='for循环.jpeg' width=400 align='left'>

下节预告

<img src='下节预告.jpeg' width=400 align='left'>

本关总结

下面让我们一起来总结一下今天的重点知识:

  • for循环
  • for循环与while循环的区别

for循环的次数固定,即所遍历的序列长度

while为无限循环

下节预告

本节课的内容就到这里啦~

后续还有更多精彩课程:

自动处理表格文件

自动发送邮件

利用爬虫爬取信息

人工智能小案例

……

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

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

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

52周存钱挑战 1/3

52周存钱挑战(3)

1.0x

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

行动力超过

累计学习

学习下一课时