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()