52周存钱挑战_v5.0

"""
    作者:范文武
    功能:52 周存钱挑战
    版本:5.0
    日期:11/15/2018
    2.0新增功能:记录每周的存款数
    3.0新增功能:使用循环直接计数
    4.0新增功能:灵活设置每周的存款数,增加的存款数及存款周数
    5.0新增功能:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
"""
import math
import datetime


def save_money_in_n_weeks(money_per_week,increase_money,total_week):
    """   
        计算n周内的存款金额 
    """
    money_list = []         # 记录每周存款数的列表
    saved_money_list = []   # 记录每周账户金额的列表

    for i in range(total_week):
        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_n_weeks(money_per_week,increase_money,total_week)

    input_date_str = input('请输入日期(yyy/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()


"""
    学习笔记:
        datetime库:
            处理时间的标准函数库datetime
            datetime.now()获取当前日期和时间
            字符串->datetime
                datetime.strptime(),解析时间字符串
            datetimne->字符串
                datetime.strftime()格式化datetime为字符串显示
            日期时间格式参考:
            https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
            isocalendar()返回年,周数,及周几
            更多操作参考:
            https://docs.python.org/3/library/datetime.html#module-datetime
            
"""

猜你喜欢

转载自blog.csdn.net/y1363127458/article/details/84170859