2020-12-28

用python判断这一天是这一年的多少天

代码

# 输入
data = input('请输入日期(格式为:2020-02-03):').split('-')
year = int(data[0])
month = int(data[1])
day = int(data[2])
# 每个月有多少天:区分平年  闰年
def is_leap(year):
    '''
    判断是否是闰年
    :param year:一个整数,表示年份
    :return:True or False
    '''
    # 普通年能被4整除且不能被100整除的为闰年
    # 世纪年能被400整除
    return (year%4 == 0 and year%100 != 0) or year%400 == 0
# 每个月的天数列表
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days[1] += int(is_leap(year))    # 闰年二月有29天
# 计算
result = sum(days[:month-1]) + day
# 输出
print('您输入的日期是%d的第%d天' % (year, result))

输出的效果图:
在这里插入图片描述

以下是一个满足你需求的 Python 程序,它会循环每 2 秒向日志文件 `my.log` 写入一行日志,格式为序号加时间,并且每次写入的内容会立即显示在终端上。即使程序被强行结束,再次运行时序号会从上次结束的地方继续: ```python import time import os LOG_FILE = "my.log" COUNT_FILE = "counter.dat" # 读取或初始化计数器 if os.path.exists(COUNT_FILE): with open(COUNT_FILE, "r") as f: line_count = int(f.read().strip()) else: line_count = 0 try: while True: current_time = time.ctime() log_line = f"{line_count + 1}. {current_time}\n" # 写入日志文件 with open(LOG_FILE, "a") as f: f.write(log_line) f.flush() # 确保内容立即写入磁盘 os.fsync(f.fileno()) # 确保写入完成 # 打印到终端 print(log_line.strip()) # 更新计数器 line_count += 1 with open(COUNT_FILE, "w") as f: f.write(str(line_count)) time.sleep(2) except KeyboardInterrupt: print("\n日志写入程序已终止。") ``` ### 代码解释: 1. **`LOG_FILE`**:定义日志文件名 `my.log`。 2. **`COUNT_FILE`**:定义一个计数器保存文件,用于记录已经写入了多少行。 3. **读取计数器**: - 如果 `counter.dat` 文件存在,就读取其中的数字作为当前行号; - 否则从 0 开始。 4. **循环写入日志**: - 每次循环生成一行日志,格式为 `序号. 时间`; - 使用 `with open(..., "a")` 以追加模式写入文件; - 使用 `f.flush()` 和 `os.fsync()` 确保写入内容立即刷新到磁盘; - 打印到终端; - 更新计数器并保存到 `counter.dat`; - 每次写入后 `line_count` 增加 1。 5. **异常处理**: - 使用 `try-except` 捕获 `KeyboardInterrupt`(Ctrl+C)以优雅退出。 --- ### 注意事项: - `counter.dat` 文件用于持久化保存行号,确保程序重启后序号连续。 - `my.log` 文件会不断追加内容,不会覆盖旧内容。 - 若你使用的是 Linux/macOS,可以使用 `tail -f my.log` 实时查看日志内容。 --- ### 相关问题:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值