▼点击下方卡片关注我
▲点击上方卡片关注我
基础闹钟功能实现
datetime
模块来处理时间,用winsound
来播放提示音:1
import datetime
2
import winsound
3
import time
5
def basic_alarm(wake_time):
6
“”“基础闹钟函数”“”
7
while True:
8
# 获取当前时间
9
current_time = datetime.datetime.now().strftime('%H:%M')
11
if current_time == wake_time:
12
# 发出蜂鸣声,频率800Hz,持续1000ms
13
winsound.Beep(800, 1000)
14
print(“该起床啦!”)
15
break
17
time.sleep(30) # 每30秒检查一次时间
19
# 使用示例
20
wake_time = “07:30”
21
basic_alarm(wake_time)
⚠️ 小贴士:
time.sleep()
间隔不要设太小,容易占用太多CPU资源用
try-except
包装下代码,避免意外中断Windows用
winsound
,Linux/Mac可以用pygame
播放音频
加点智能化功能
光能响那也太low了,加点天气和习惯分析功能:
1
import requests
2
from datetime import datetime, timedelta
4
class SmartAlarm:
5
def __init__(self):
6
self.wake_records = [] # 记录起床数据
7
self.weather_api_key = “你的天气API密钥”
9
def get_weather(self, city):
10
“”“获取天气信息”“”
11
url = f“http://api.weatherapi.com/v1/forecast.json?key={self.weather_api_key}&q={city}”
12
try:
13
response = requests.get(url)
14
data = response.json()
15
return data['current']['temp_c']
16
except:
17
return None
19
def analyze_wake_pattern(self):
20
“”“分析起床模式”“”
21
if len(self.wake_records) < 5:
22
return “数据不足,继续收集中...”
24
on_time_count = sum(1 for record in self.wake_records if record['status'] == 'on_time')
25
success_rate = on_time_count / len(self.wake_records) * 100
27
return f“你最近的准时起床率是:{success_rate:.1f}%”
有了这些功能,咱的闹钟就能根据实际情况给出建议,比如天气冷的时候提醒多穿点。
自适应调整
1
def adjust_wake_time(self, current_wake_time, success_rate):
2
“”“根据起床成功率自动调整时间”“”
3
wake_time = datetime.strptime(current_wake_time, '%H:%M')
5
if success_rate < 50:
6
# 起床成功率太低,往后推5分钟
7
new_time = wake_time + timedelta(minutes=5)
8
elif success_rate > 90:
9
# 表现很好,尝试提前3分钟
10
new_time = wake_time - timedelta(minutes=3)
11
else:
12
return current_wake_time
14
return new_time.strftime('%H:%M')
⚠️ 小贴士:
调整幅度要温和,别一下子改太多 记得持久化保存历史数据,下次打开程序也能用 加个配置文件存放个性化设置
高级功能扩展
要是想做得更智能,还可以加这些功能:
1
class AdvancedAlarm(SmartAlarm):
2
def check_schedule(self):
3
“”“检查日程安排”“”
4
# 接入日历API,获取今天的日程
5
pass
7
def calculate_sleep_time(self, wake_time):
8
“”“计算最佳入睡时间”“”
9
# 按照90分钟睡眠周期倒推
10
cycles = 5 # 建议睡眠5个周期
11
total_mins = cycles * 90 + 15 # 加15分钟入睡缓冲
13
wake_datetime = datetime.strptime(wake_time, '%H:%M')
14
sleep_time = wake_datetime - timedelta(minutes=total_mins)
16
return sleep_time.strftime('%H:%M')
⚠️ 小贴士:
代码逻辑要简单可靠,早起时脑子可能不太清醒 建议加个日志功能,方便排查问题 数据库用SQLite就够了,别整太复杂
推 荐 阅 读
点赞分享
让钱和爱流向你