Python小程序(4)--52周存钱挑战

博客围绕52周存钱法展开,介绍其规则及一年存款总数。还讲述了Python实现该存钱法的不同版本功能,从基础版本逐步增加记录每周存款数、使用循环计数、灵活设置参数、根据日期输出存款金额等功能,同时提及math库和datetime库的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

52周存钱法,即52周阶梯式存钱法,是国际上非常流行的存钱方法。
• 按照52周存钱法,存钱的人必须在一年52周内,每周递存10元
• 例子:
第一周存10元,第二周存20元,第3周存30元,一直到第52周存520元。
这样一年下来会有多少钱呢?
10+20+30+40+50+……+520=13780

1.0版本

'''
功能:52周存钱挑战
版本:1.0
'''
def main ():
    money_per_week = 10  #每周存入的金额
    i= 1   #周数
    increase_money = 10  #递增的金额
    total_week = 52   #总共的周数
    saving = 0  #账户累计

    while i<= total_week :
        saving += money_per_week

        print('第{}周存入{}元,账户累计{}元'.format(i,money_per_week ,saving ) )
        #更新下一周存钱金额
        money_per_week += increase_money
        i += 1

if __name__ == "__main__":
    main()

2.0版本

增加功能:记录每周的存款数

 

 更多math库函数请参考: https://docs.python.org/3/library/math.html

'''
功能:52周存钱挑战
版本:2.0
'''
import math
def main ():
    money_per_week = 10  #每周存入的金额
    i= 1   #周数
    increase_money = 10  #递增的金额
    total_week = 52   #总共的周数
    saving = 0  #账户累计

    money_list = []  #记录每周存款数的列表


    while i<= total_week :
        #saving += money_per_week

        money_list.append(money_per_week )
        saving = math.fsum(money_list )


        print('第{}周存入{}元,账户累计{}元'.format(i,money_per_week ,saving ) )

        #更新下一周存钱金额
        money_per_week += increase_money
        i += 1

if __name__ == "__main__":
    main()

3.0版本

增加功能:使用循环直接计数

'''
功能:52周存钱挑战
版本:3.0
'''
import math
def main ():
    money_per_week = 10  #每周存入的金额
    i= 1   #周数
    increase_money = 10  #递增的金额
    total_week = 52   #总共的周数
    saving = 0  #账户累计

    money_list = []  #记录每周存款数的列表


    #while i<= total_week :
    for i in range(total_week +1):
        #saving += money_per_week

        money_list.append(money_per_week )
        saving = math.fsum(money_list )


        print('第{}周存入{}元,账户累计{}元'.format(i,money_per_week ,saving ) )

        #更新下一周存钱金额
        money_per_week += increase_money
        #i += 1

if __name__ == "__main__":
    main()

 4.0版本

增加功能:灵活设置每周的存款数,增加的存款数及存款周数

'''
功能:52周存钱挑战
版本:3.0
'''
import math

def save_money_in_n_week(money_per_week,increase_money,total_week):
    '''
    计算n周内存款金额
    '''
    money_list = []  # 记录每周存款数的列表
    global saving #定义全局变量 不然saving只在函数内变化
    for i in range(total_week + 1):
        money_list.append(money_per_week)
        saving = math.fsum(money_list)
        print('第{}周存入{}元,账户累计{}元'.format(i, 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_week(money_per_week,increase_money,total_week)
    print(saving )
if __name__ == "__main__":
    main()

5.0版本 

增加功能:根据用户输入的日期,判断是一年中的第几周,然后输出
相应的存款金额

datetime库
• 处理时间的标准函数库datetime
• datetime.now() 获取当前日期和时间
• 字符串 -> datetime
datetime.strptime(),解析时间字符串
• datetime -> 字符串
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

#获取当前时间
import datetime

datetime.datetime.now()

#获取日期字符串

datetime.datetime.strptime('2019/05/10',format('%Y/%m/%d'))

#输出:datetime.datetime(2019, 5, 10, 0, 0)

#获取周数
isocalendar() 

now=datetime.datetime.now()
print(now)
#2019-05-10 14:53:00.268762
now.isocalendar() 
#(2019, 19, 5)   2019年第19周星期五

#datetime -> 字符串
datetime.datetime.strftime(now,'%Y/%m/%d')
Out[]: '2019/05/10'
'''
功能:52周存钱挑战
版本:5.0
'''
import math
import datetime

def save_money_in_n_week(money_per_week,increase_money,total_week):
    '''
    计算n周内存款金额
    '''
    money_list = []  # 记录每周存款数的列表
    save_money_list = []  #记录每周账户累计
    global saving #定义全局变量 不然saving只在函数内变化
    for i in range(total_week + 1):
        money_list.append(money_per_week)
        saving = math.fsum(money_list)
        save_money_list.append(saving)
        print('第{}周存入{}元,账户累计{}元'.format(i, money_per_week, saving))
        # 更新下一周存钱金额
        money_per_week += increase_money
    return save_money_list

def main ():
    money_per_week = float(input('请输入每周存入的金额:')  )#每周存入的金额
    increase_money = float (input('请输入每周递增的金额:')) #递增的金额
    total_week = int(input('请输入存钱周数:'))           #总共的周数

    #调用函数
    save_money_list = save_money_in_n_week(money_per_week,increase_money,total_week)

    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 ,save_money_list[week_num -1]))
if __name__ == "__main__":
    main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值