【python】52周存钱法功能改进

  • 增加功能:灵活设置每周的存钱数,增加的存款数及存款周数
  • 增加功能:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额

 (1)灵活设置参数

import math
def save_money_in_n_weeks(money_per_week, increase_money, total_week):
     """
         计算n周内的存款金额
     """
     money_list = []  # 记录每周存款数的列表 
     for num_week in range(total_week):
         money_list.append(money_per_week)
         saving = math.fsum(money_list) 
         # 输出信息
         print('第{}周,存入{}元,账户累计{}元'.format(num_week + 1, money_per_week, saving)) 
         # 更新下一周的存钱金额
         money_per_week += increase_money 
     return saving 
def main():
     """
        主函数
     """
     money_per_week = float(input('请输出每周的存入的金额:'))          # 每周的存入的金额
     increase_money = float(input('请输出每周的递增金额:'))        # 递增的金额
     total_week = int(input('请输出总共的周数:'))                 # 总共的周数
 
     # # 局部变量
     # saving = 0 
     saving = save_money_in_n_weeks(money_per_week, increase_money, total_week)
     print('总的存款金额:', saving)  
if __name__ == '__main__':
     main()

运行结果: 

 (2)判断输入的日期是第几周,输出对应的存款金额

import math
import datetime
def save_money_in_n_weeks(money_per_week, increase_money, total_week):
     """
         计算n周内的存款金额
     """
     money_list = []        # 记录每周存款数的列表
     saved_money_list = []  # 记录每周的账户累计 
     for num_week in range(total_week):
         money_list.append(money_per_week)
         saving = math.fsum(money_list)
         saved_money_list.append(saving) 
         # 输出信息
         print('第{}周,存入{}元,账户累计{}元'.format(num_week + 1, money_per_week, saving)) 
         # 更新下一周的存钱金额
         money_per_week += increase_money 
     print()
 
     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_n_weeks(money_per_week, increase_money, total_week) 
     input_data_str = input('请输入日期(yyyy-mm-dd):')
     input_data = datetime.datetime.strptime(input_data_str, format('%Y-%m-%d'))  # 要解析的需要和上面输入的对应 
     week_num = input_data.isocalendar()[1]
     print('第{}周的存款:{}'.format(week_num, saved_money_list[week_num - 1]))  
if __name__ == '__main__':
     main()

运行结果: 

 


版权声明:本文为aigo_2021原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。