每天30min学习python—52周存钱挑战
目录
- 52周存钱挑战1.0
- 52周存钱挑战2.0+3.0
- 52周存钱挑战4.0
- 52周存钱挑战5.0
常识点:
- 52周存钱法:即52周阶梯式存钱法,是国际上非常流行的存钱方法。
- 存钱的人必须存满52周,而且每周递增指定的金额(比如:每周比上一周多存10元),这样一年下来会有多少钱呢?
代码区:
"""
作者:Troublemaker
功能:52周存钱挑战
版本:1.0
日期:2019/10/1 15:45 “阿中生日快乐“
脚本:1.0.py
"""
def main():
"""
主函数
"""
begin_week = 1
total_week = 52
first_save_money = 10
total_money = 0
while begin_week <= total_week:
total_money += first_save_money
first_save_money += 10
begin_week += 1
print("52周后存入总额:{}元。".format(total_money))
if __name__ == '__main__':
main()
- 52周阶梯式存钱,看52周后能存下来多少钱?
- 2.0新增:记录每周的存款数
- 3.0新增:使用循环直接计数
知识点:
列表list:
- list是有序的元素集合
- 可通过索引访问单个元素(如:list[0],list[2])
- 也可以通过索引访问多个内容(如:list[0:2],list[0:])
- 而且列表中每个元素类型可以不同
列表的一些操作:
- list1 + list2 合并两个列表
- list1 * n 重复n次列表内容
- len(list1) 查看列表长度
- X(某个元素) in list1 检查元素x是否在list1列表中
- list1.append(x) 把x加到list1列表的末尾,注意是末尾
- list1.sort() 对list1列表中的元素进行排序
- list1.reverse() 对list1列表中的元素进行逆序
- list1.index(x) 返回list1列表中第一次出现x的索引位置,注意是第一次
- list1.insert(i,x) 在第i个位置插入新的x元素
- list1.count(x) 返回x元素在列表中的个数
- list1.remove(x) 移除第一次出现的元素x
- list1.pop(i) 取出列表中i位置上的元素,并将其删除
math 库
- 需要用到的———math.fsum(list1) 对集合内的所有元素求和
- 想了解更多math库相关的函数访问这里:我是传送门
代码区:
"""
作者:Troublemaker
功能:52周存钱挑战
版本:2.0
日期:2019/10/1 16:19 ”阿中,生日快乐“
脚本:2.0.py
新增:记录每周的存款数
"""
import math
def main():
"""
主函数
"""
begin_week = 1
total_week = 52
first_save_money = 10
every_add_money = 0
everyweek_save_money_list = []
while begin_week <= total_week:
everyweek_save_money = first_save_money + every_add_money
everyweek_save_money_list.append(everyweek_save_money)
every_add_money += 10
begin_week += 1
week = 1
for money in everyweek_save_money_list:
print("第{}周,存入的金额为{}元。".format(week, money))
week += 1
total_money = math.fsum(everyweek_save_money_list)
print("52周后存入总额:{}元。".format(total_money))
if __name__ == '__main__':
main()
- 52周阶梯式存钱,看52周后能存下来多少钱?
- 2.0新增:记录每周的存款数
- 3.0新增:使用循环直接计数
- 4.0新增:灵活设置每周的存款数,增加的存款数及周数
知识点
- 变量的作用范围
- 局部变量:函内的变量,作用范围只在函数内
- 全局变量:函数外的变量,在所有函数中都能使用,global
代码区:
"""
作者:Troublemaker
功能:52周存钱挑战
版本:4.0
日期:2019/10/6 11:19
脚本:4.0.py
新增:记录每周的存款数
新增:灵活设置每周的存款数,增加的存款数及周数
"""
import math
def set_money_and_week(first_save_money, every_add_money, total_week):
"""
设置初始周数和存款数
"""
everyweek_save_money_list = []
begin_week = 1
while begin_week <= total_week:
if begin_week < 2:
everyweek_save_money = first_save_money
else:
everyweek_save_money = everyweek_save_money + every_add_money
everyweek_save_money_list.append(everyweek_save_money)
begin_week += 1
global total_money
total_money = math.fsum(everyweek_save_money_list)
def main():
"""
主函数
"""
first_save_money, every_add_money, total_week = map(int, input("输入初始存款数,增加的存款数及周数(用逗号隔开):").split(','))
set_money_and_week(first_save_money, every_add_money, total_week)
print("52周后存入总额:{}元。".format(total_money))
if __name__ == '__main__':
main()
- 52周阶梯式存钱,看52周后能存下来多少钱?
- 2.0新增:记录每周的存款数
- 3.0新增:使用循环直接计数
- 4.0新增:灵活设置每周的存款数,增加的存款数及周数
- 5.0新增:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
知识点
- datetime库的使用
- datetime.now() 获取当前日期和时间
- datetime.strptime() 将字符串解析为时间 (中间的p对应英文parse)
- datetime.strftime() 格式化datetime为字符串显示
- isocalendar() 返回三个元素(年,第几周,周几)
- 更多使用方法参考:datetime文档 ——> 传送门
代码区
"""
作者:Troublemaker
功能:52周存钱挑战
版本:5.0
日期:2019/10/6 15:10
脚本:5.0.py
新增:记录每周的存款数
新增:灵活设置每周的存款数,增加的存款数及周数
新增:根据用户输入的日期,判断是一年中的第几周,然后输出相应的存款金额
"""
import math
import datetime
def set_money_and_week(first_save_money, every_add_money, total_week):
"""
设置初始周数和存款数
"""
global everyweek_save_money_list
everyweek_save_money_list = []
begin_week = 1
while begin_week <= total_week:
if begin_week < 2:
everyweek_save_money = first_save_money
else:
everyweek_save_money = everyweek_save_money + every_add_money
everyweek_save_money_list.append(everyweek_save_money)
begin_week += 1
global total_money
total_money = math.fsum(everyweek_save_money_list)
def main():
"""
主函数
"""
first_save_money, every_add_money, total_week = map(int, input("输入初始存款数,增加的存款数及周数(用逗号隔开):").split(','))
set_money_and_week(first_save_money, every_add_money, total_week)
print("52周后存入总额:{}元。".format(total_money))
input_str_date = input('请输入日期(格式xxxx-xx-xx):')
get_time_date = datetime.datetime.strptime(input_str_date, "%Y-%m-%d")
where_year = get_time_date.isocalendar()[0]
where_week = get_time_date.isocalendar()[1]
how_many_money = everyweek_save_money_list[where_week - 1]
print("这是{}中的第{}周,存款的金额为{}元。".format(where_year, where_week, how_many_money))
if __name__ == '__main__':
main()