【问题标题】:Python exit while loop and print only oncePython退出while循环并只打印一次
【发布时间】:2021-06-14 20:11:55
【问题描述】:

我想循环“时间”直到 12:30,但只打印一次。我该怎么做?

@client.event
async def on_ready():
    reminder.start()
    print("rdy")


@tasks.loop()
async def reminder():
    i= 0
    now = datetime.datetime.now()
    start= now.replace(hour=22, minute=45, second=0, microsecond=0)
    if now<start:
        await client.get_channel(852950484842315786).send(f"works")

Output

【问题讨论】:

  • while i == 0 始终为真,因为您不会在此循环中更改 i 值。这将是一个无限循环
  • 如果您只想打印一次然后使用 break 退出循环并在此之后打印
  • @blazej 我可以用什么代替?
  • @barny 要么我做错了,但我使用 break 后它不打印
  • 如果用户中断,则退出整个循环迭代。 * 不是一个可以学习编程基础知识的网站。

标签: python time while-loop discord.py


【解决方案1】:

只需检查时间。

@tasks.loop(seconds=60)
async def remider():
    i= 0
    o= 0
    now = datetime.datetime.now()
    start= now.replace(hour=12, minute=30, second=0, microsecond=0)
    if now<start:
        await client.get_channel(852950484842315786).send(f"works")

有一件事是在文件的末尾你必须开始循环

reminder.start()

【讨论】: