52周存钱挑战1.0
案例描述
案例分析
完整程序及结果
'''
作者:张梦
功能:52周存钱挑战
版本:1.0
日期:2018.12.12
'''
'''主函数'''
def main():
money_per_week = 10 # 每周存入金额
i = 1 # 记录周数
increase_money = 10 # 递增金额
total_weeks =52 # 总共周数
saving = 0 # 账户累计金额
while i <= total_weeks:
# 账户金额
saving += money_per_week
# 输出
print('第{}周,存入{}元,账户累计{}元'.format(i,money_per_week,saving))
# 更新下一周存入金额
money_per_week += increase_money
i += 1
if __name__ == '__main__':
main()
结果:(把结果print到OneNote粘过来的)
52周存钱挑战2.0
案例描述
案例分析
列表
前三点与字符串一样
append v. 增补,附加,添加
示例:
math库
更多math库函数:https://docs.python.org/3/library/math.html
示例:
完整程序
'''
作者:张梦
功能:52周存钱挑战
版本:2.0
新增功能:记录每周存款数
日期:2018.12.12
'''
import math
'''主函数'''
def main():
money_per_week = 10 # 每周存入金额
i = 1 # 记录周数
increase_money = 10 # 递增金额
total_weeks =52 # 总共周数
saving = 0 # 账户累计金额
money_list = [] # 记录每周存款数的列表
while i <= total_weeks:
# 账户金额
# 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()
52周存钱挑战3.0
案例描述
用for代替while
案例分析
for循环
示例:
完整程序
这里i是从0开始,所以输出时记得加1
52周存钱挑战4.0
案例描述
案例分析
只需把部分程序更改成如下:
形参与实参,全局变量与局部变量
函数外的是全局变量,如果想要在函数里更改和使用全局变量,需要先声明:global 变量名
完整程序及结果
'''
作者:张梦
功能:52周存钱挑战
版本:4.0
2.0新增功能:记录每周存款数
3.0新增功能:使用for循环直接计数
4.0新增功能:灵活设置每周存款数、增加的存款数及存款周数
日期:2018.12.16
'''
import math
'''计算N周内的存款金额'''
def save_money_in_n_weeks(money_per_week, increase_money, total_weeks):
money_list = [] # 记录每周存款数的列表
for i in range(total_weeks):
# 账户金额
money_list.append(money_per_week)
saving = math.fsum(money_list)
# 输出
# print('第{}周,存入{}元,账户累计{}元'.format(i + 1, money_per_week, saving))
# 更新下一周存入金额
money_per_week += increase_money
return saving # 将参数传到主函数里
'''主函数'''
def main():
money_per_week = float(input('请输入每周存入的金额')) # 每周存入金额
increase_money = float(input('请输入每周递增的金额')) # 递增金额
total_weeks = int(input('请输入总共的周数')) # 总共周数
saving = save_money_in_n_weeks(money_per_week, increase_money, total_weeks)
print('总的存款金额', saving)
if __name__ == '__main__':
main()
结果:
52周存钱挑战4.0
案例描述
案例分析
将总金额存入列表,然后索引查找
datatime库
日期时间格式:https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
一个是四位的年份一个是两位的年份
更多操作:https://docs.python.org/3/library/datetime.html#module-datetime
strptime parse:解析
完整程序及结果
'''
作者:张梦
功能:52周存钱挑战
版本:5.0
2.0新增功能:记录每周存款数
3.0新增功能:使用for循环直接计数
4.0新增功能:灵活设置每周存款数、增加的存款数及存款周数
5.0新增功能:根据用户输入日期,判断是第几周,输出存款总金额
日期:2018.12.16
'''
import math
import datetime
'''计算N周内的存款金额'''
def save_money_in_n_weeks(money_per_week, increase_money, total_weeks):
money_list = [] # 记录每周存款数的列表
saved_money_list = [] # 记录每周账户总额
for i in range(total_weeks):
# 账户金额
money_list.append(money_per_week)
saving = math.fsum(money_list)
saved_money_list.append(saving)
# 输出
# print('第{}周,存入{}元,账户累计{}元'.format(i + 1, money_per_week, saving))
# 更新下一周存入金额
money_per_week += increase_money
return saved_money_list
'''主函数'''
def main():
money_per_week = float(input('请输入每周存入的金额')) # 每周存入金额
increase_money = float(input('请输入每周递增的金额')) # 递增金额
total_weeks = int(input('请输入总共的周数')) # 总共周数
# 调用函数
saved_money_list = save_money_in_n_weeks(money_per_week, increase_money, total_weeks)
# 输出第几周的存款
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()
结果: