Python入门案例(四):52周存钱挑战

浏览: 1282

一、52周存钱挑战V1.0

主要知识点:

  • 循环语句while
  • 格式化字符串
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:money_challenge1.0.py
@time:2018/11/18 11:52
@1.0功能:52周存钱挑战
"""


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


二、52周存钱挑战V2.0

主要知识点:

  • 列表:方括号,有序的元素集合,通过索引访问单个元素,可通过区间索引访问子列表内容,列表中每个元素类型可以不同
  • math库
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:money_challenge2.0.py
@time:2018/11/18 11:52
@1.0功能: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:
# 存钱操作
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周存钱挑战V3.0

主要知识点:

  • for()循环:循环变量在每次循环时,会直接赋值对应的元素内容;循环的次数固定,即所遍历的序列长度
  • range()函数:返回一个可迭代的对象
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:money_challenge3.0.py
@time:2018/11/18 11:52
@1.0功能:52周存钱挑战
@2.0功能:记录每周的存款数
@3.0功能:使用循环直接计数
"""
import math


def main():
money_per_week = 10 # 每周存入的金额
increase_money = 10 # 递增的金额
total_week = 52 # 总共的周数
saving = 0 # 账户累计

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

for i in range(total_week):
# 存钱操作
money_list.append(money_per_week)
saving = math.fsum(money_list)

# 输出信息
print('第{}周,存入{}元,账户累计{}元'.format(i+1, money_per_week, saving))

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


if __name__ == '__main__':
main()


四、52周存钱挑战V4.0

主要知识点:

函数的参数传递及变量的使用范围

# -*- coding:utf-8 -*-
"""
@author:Angel
@file:money_challenge4.0.py
@time:2018/11/18 11:52
@1.0功能:52周存钱挑战
@2.0功能:记录每周的存款数
@3.0功能:使用循环直接计数
@4.0功能:灵活设置每周的存款数,增加的存款数及存款周数
"""
import math


def save_money_in_n_weeks(money_per_week, increase_money, total_week):
# 计算n周内的存款金额

saving = 0 # 账户累计
money_list = [] # 记录每周存钱数的列表

for i in range(total_week):
# 存钱操作
money_list.append(money_per_week)
saving = math.fsum(money_list)

# 输出信息
print('第{}周,存入{}元,账户累计{}元'.format(i + 1, money_per_week, saving))

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


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

# 调用函数
save_money_in_n_weeks(money_per_week, increase_money, total_week)


if __name__ == '__main__':
main()


五、52周存钱挑战V5.0

主要知识点:

datetime库:时间处理的标准函数库

# -*- coding:utf-8 -*-
"""
@author:Angel
@file:money_challenge5.0.py
@time:2018/11/18 11:52
@1.0功能:52周存钱挑战
@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周内的存款金额

saving = 0 # 账户累计
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('请输入日期(yyyy/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()
推荐 0
本文由 花花_Angel 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册