You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何获取循环输出首尾值并将秒级结果改为分钟级输出?

解决方案

实现思路

  • 针对仅取首尾符合条件值的需求:新增两个变量分别存储首次命中eph < 0条件的结果、末次命中该条件的结果,遍历过程中不再逐次打印,仅更新存储变量,遍历结束后统一输出两个存储值即可
  • 针对输出频率调整为每分钟一次的需求:将原循环按秒遍历的逻辑改为按60秒步长遍历,单次迭代对应1分钟的时间间隔,同时降低无效遍历次数提升运行效率

修改后完整代码

import swisseph as swe # 原代码遗漏的依赖导入,按需补充即可
from datetime import datetime, timedelta
from astropy.time import Time

start_date_time = datetime(2021, 1, 30, 15, 00, 00)
end_date_time = datetime(2021,1, 30,16,00,00)
# 计算总分钟数,按分钟为步长遍历
time_diff_min = int((end_date_time - start_date_time).total_seconds() // 60)

first_res = None
last_res = None

for i in range(time_diff_min + 1):
    # 每次迭代加60秒,对应1分钟间隔
    day = start_date_time + timedelta(seconds=i * 60)
    dt = Time(day)
    jd = dt.jd
    eph = swe.calc_ut(jd,2)[0][3]
    if eph < 0:
        current_val = f"{dt} {eph}"
        if first_res is None:
            first_res = current_val
        last_res = current_val

# 输出符合要求的首尾结果
print(first_res)
print(last_res)

可选适配方案

如果你的业务逻辑要求必须每秒计算一次,仅调整打印频率为每分钟一次,可保留原每秒遍历的逻辑,新增打印计数器实现即可:

import swisseph as swe
from datetime import datetime, timedelta
from astropy.time import Time

start_date_time = datetime(2021, 1, 30, 15, 00, 00)
end_date_time = datetime(2021,1, 30,16,00,00)
time_diff = int((end_date_time - start_date_time).total_seconds())

first_res = None
last_res = None
print_counter = 0

for i in range(time_diff):
    day = (start_date_time + timedelta(0, i))
    dt = Time(day)
    jd =dt.jd
    eph = swe.calc_ut(jd,2)[0][3]
    if eph < 0:
        current_val = f"{dt} {eph}"
        if first_res is None:
            first_res = current_val
        last_res = current_val
        # 每60次符合条件的结果打印一次,即对应每分钟打印一次
        if print_counter % 60 == 0:
            print(current_val)
        print_counter += 1

# 最后输出首尾符合条件的结果
print("首条结果:", first_res)
print("末条结果:", last_res)

内容的提问来源于stack exchange,提问作者Butterfly Fiziks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:27:05