笔记
从案例分析切入知识点-----由简开始
案例4-3:
1.0新增功能:52周存钱计划
继续分析IPO
2.0新增功能:记录每周的存款数,用list
3.0新增功能:使用for循环实现功能
4.0新增功能:a.灵活设置每周的存款数,增加的存款数机存款周数
b.结构化代码(函数封装)
5.0新增功能:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
----------------------------代码实现--------------------------
"""
--*-- coding: utf-8 --*--
@Time :2019/7/13
@Author :ZHOUMENGJIE
File :money_challenge.py
功能:52周存钱挑战
版本:V4.0
v3.0功能:使用for循环直接计数
v4.0新增功能:灵活设置每周的存款数,增加的存款数机存款周数
5.0新增功能:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
"""
import math
import datetime
def save_money_in_week(total_week,money_per_week,increase_money):
'''
计算存款金额周数
'''
money_list = [] #记录每周存款数的列表#
saved_money_list = [] #记录账户每周账户累计
for i in range(total_week):
# 存钱操作,引入math函数
money_list.append(money_per_week)
saving = math.fsum(money_list)#列表求和方法
saved_money_list.append(saving)
# 更新下一周的存钱金额
money_per_week += increase_money
return saved_money_list
def main():
'''
主函数
'''
money_per_week = float(input("请输入存款金额:")) #每周的存入金额
increase_money = float(input("请输入递增金额:")) #递增的金额
total_week = int(input("请输入存款总周数:")) #总共周数
# 调用函数
saved_money_list = save_money_in_week(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_num = input_date.isocalendar()[1]
print("第{}周的存款:{}元".format(week_num,saved_money_list[week_num - 1]))
if __name__ == "__main__":
main()
---------------涉及知识点---------------
1.datetime标准函数库