admin管理员组

文章数量:1794759

Python小程序(4)

Python小程序(4)

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库函数请参考: docs.Python/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为字符串显示 • 日期时间格式参考: docs.python/3/library/datetime.html#strftime-strptime-behavior • isocalendar() 返回年,周数,及周几 • 更多操作参考: docs.python/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()

 

本文标签: 程序Python