Python打卡 DAY 29

知识点回顾

1.  类的装饰器

2.  装饰器思想的进一步理解:外部修改、动态

3.  类方法的定义:内部定义和外部定义

作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等,未来再过几个专题部分我们即将开启深度学习部分。

 

函数与类的核心知识点整理

1. 函数(Function)

  • 封装与复用:函数是代码的逻辑单元,通过def定义,可重复调用

  • 参数传递:支持位置参数、关键字参数、默认参数、可变参数(*args**kwargs

  • 作用域:理解LEGB规则(Local → Enclosing → Global → Built-in)

  • 闭包与装饰器:函数作为对象传递,闭包捕获外层变量,@decorator语法糖的应用

  • 递归:需明确终止条件,警惕栈溢出风险

2. 类(Class)

  • 面向对象三要素:封装(属性/方法)、继承(代码复用)、多态(接口统一)

  • 特殊方法__init__构造器、__str__/__repr__显示方法、运算符重载

  • 类与实例:类属性 vs 实例属性,@classmethod@staticmethod的区别

  • 继承体系:方法解析顺序(MRO)、super()的使用、多继承的钻石问题

  • 组合优于继承:通过对象嵌套实现灵活设计

对Python这门工具的理解

  1. 简洁与可读性

    Python的语法简洁明了,强调可读性,使得代码更容易理解和维护。这让我在编写代码时更加注重代码的清晰性。

  2. 丰富的标准库

    Python拥有丰富的标准库和第三方库,能够快速实现各种功能,极大地提高了开发效率。

  3. 社区与资源

    Python有着活跃的社区,丰富的学习资源和文档,使得我在遇到问题时能够快速找到解决方案。

@浙大疏锦行 

Python中实现打卡兑换礼物的功能,通常会涉及到以下几个步骤: 1. **数据结构设计**:创建一个数据库或数据结构来存储用户的打卡记录,比如字典或列表,其中每个元素包含用户ID、日期等信息。 ```python users_gifts = {} # 使用字典,key为用户ID,value为打卡记录 ``` 2. **添加打卡功能**:编写函数,当用户调用时,检查用户是否存在并更新打卡次数。例如,可以使用`datetime`库来记录每日打卡时间。 ```python import datetime def check_in(user_id): today = datetime.datetime.now().strftime("%Y-%m-%d") if user_id not in users_gifts: users_gifts[user_id] = {today: 1} else: if today not in users_gifts[user_id]: users_gifts[user_id][today] = 1 else: users_gifts[user_id][today] += 1 ``` 3. **条件判断与兑换规则**:设定一个规则,如连续7天打卡即可兑换一份礼物。可以遍历用户的打卡记录,检查是否符合条件。 ```python def can_exchange(user_id): user_history = users_gifts.get(user_id, {}) consecutive_days = {} for date, count in user_history.items(): if date - consecutive_days.get(date, '') <= datetime.timedelta(days=6): # 连续6天 consecutive_days[date] = count if len(consecutive_days) == 7: # 找到7连日 return True return False ``` 4. **兑换操作**:如果满足兑换条件,可以删除已达到兑换的打卡记录,并通知用户兑换成功。 ```python def redeem_gift(user_id): if can_exchange(user_id): for day, _ in list(users_gifts[user_id].items())[:7]: # 删除前7天的打卡记录 del users_gifts[user_id][day] print(f"恭喜用户{user_id},您的7天连续打卡已成功兑换礼物!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值