案例描述:
- 例子:
第一周存10元,第二周存20元,第三周存30元,一直到第52周存520元。这样一年下来会有多少钱呢?
10+20+30+........+520=13780
- 2.0增加功能:记录每周的存款数量
- 3.0增加功能:使用循环直接计数
- 4.0增加功能:灵活设置每周的存款数,增加的存款数及存款周数
- 5.0增加功能:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
必备知识点:
- 可在提示语中插入输出的方法:format函数
print('第{}周应该存{}元,账户累计{}元'.format(i+1,money_per_week,saving))
- 在列表中(末尾处)加入新的元素:list1.append(x)
money_list.append(money_per_week)
- 创建空列表:
money_list = [] #记录每周存款金额的列表
- math库:
math.fsum(list) #对集合内的元素求和
更多math库函数请参考:https://docs.python.org/3/library/math.html
- 带计数的循环:
for i in range(5):
意思为遍历range中的各个元素,且i分别为range(5)中的元素即0,1,2,3,4。
具体代码:
- 1.0版本:
'''
52周存钱挑战
版本1.0
'''
def main():
total_week = 52 #总共的周数
money_per_week = 10 #第一周存的金额
increase_money = 10 #每周增加的金额
saving = 0 #存款累计金额
i = 0 #计数器
while i < total_week:
# 计算
saving += money_per_week
print('第{}周应该存{}元,账户累计{}元'.format(i+1,money_per_week,saving))
#更新下一周
i += 1
money_per_week += increase_money
if __name__ == '__main__':
main()
- 2.0版本:
'''
52周存钱挑战
版本2.0
'''
import math
def main():
total_week = 52 #总共的周数
money_per_week = 10 #第一周存的金额
increase_money = 10 #每周增加的金额
i = 0 #计数器
money_list = [] #记录每周存款金额的列表
while i < total_week:
# 计算
money_list.append(money_per_week)
saving = math.fsum(money_lise)
print('第{}周应该存{}元,账户累计{}元'.format(i+1,money_per_week,saving))
#更新下一周
i += 1
money_per_week += increase_money
if __name__ == '__main__':
main()
- 3.0版本:
'''
52周存钱挑战
版本3.0
'''
import math
def main():
total_week = 52 #总共的周数
money_per_week = 10 #第一周存的金额
increase_money = 10 #每周增加的金额
money_list = [] #记录每周存款金额的列表
for i in range(total_week):
# 计算
money_list.append(money_per_week)
saving = math.fsum(money_lise)
print('第{}周应该存{}元,账户累计{}元'.format(i+1,money_per_week,saving))
#更新下一周
money_per_week += increase_money
if __name__ == '__main__':
main()
- 4.0版本:
将输入部分进行如下更改,其他不变。
total_week = int(input('输入总共的周数:')) #总共的周数
money_per_week = float(input('输入第一周存的金额:')) #第一周存的金额
increase_money = float(input('输入每周增加的金额:')) #每周增加的金额
- 5.0版本:
'''
52周存钱挑战
版本5.0
'''
import math
def main():
total_week = int(input('输入总共的周数:')) #总共的周数
money_per_week = float(input('输入第一周存的金额:')) #第一周存的金额
increase_money = float(input('输入每周增加的金额:')) #每周增加的金额
week_number = int(input('输入你想知道第几周的存款金额:')) #第几周
money_list = [] #记录每周存款金额的列表
saving_list = [] #记录每周的存款累计金额列表
for i in range(total_week):
# 计算
money_list.append(money_per_week)
saving = math.fsum(money_list)
saving_list.append(saving)
#更新下一周
money_per_week += increase_money
print('第{}周,账户累计存款{}元'.format(week_number, saving_list[week_number - 1]))
if __name__ == '__main__':
main()
- 封装成函数版本:(自己瞎写)
''' 52周存钱挑战 版本:封装函数(自己编) ''' import math def jisuan(total_week,money_per_week,increase_money,): money_list = [] # 记录每周存款金额的列表 saving_list = [] # 记录每周的存款累计金额列表 for i in range(total_week): # 计算 money_list.append(money_per_week) saving = math.fsum(money_list) saving_list.append(saving) # 更新下一周 money_per_week += increase_money return (saving_list) def main(): total_week = int(input('输入总共的周数:')) #总共的周数 money_per_week = float(input('输入第一周存的金额:')) #第一周存的金额 increase_money = float(input('输入每周增加的金额:')) #每周增加的金额 week_number = int(input('输入你想知道第几周的存款金额:')) #第几周 saving_list = jisuan(total_week,money_per_week,increase_money) print('第{}周,账户累计存款{}元'.format(week_number,saving_list[week_number - 1])) if __name__ == '__main__': main()
- 5.0最终版本:
代码中用到的datetime 库,可以参考另一文章:python常用函数。''' 52周存钱挑战 版本:5.0 ''' import math import datetime def jisuan(total_week,money_per_week,increase_money,): money_list = [] # 记录每周存款金额的列表 saving_list = [] # 记录每周的存款累计金额列表 for i in range(total_week): # 计算 money_list.append(money_per_week) saving = math.fsum(money_list) saving_list.append(saving) # 更新下一周 money_per_week += increase_money return (saving_list) def main(): total_week = int(input('输入总共的周数:')) #总共的周数 money_per_week = float(input('输入第一周存的金额:')) #第一周存的金额 increase_money = float(input('输入每周增加的金额:')) #每周增加的金额 #调用函数 saving_list = jisuan(total_week,money_per_week,increase_money) input_date_str = input('请输入日期(yyyy/mm/dd):') input_date = datetime.datetime.strptime(input_date_str,'%Y/%m/%d') # 解析日期 week_number = input_date.isocalendar()[1] #提取周数 print('第{}周,账户累计存款{}元'.format(week_number,saving_list[week_number - 1])) if __name__ == '__main__': main()