即使条件为假,循环也会在内部保留 运行 代码
Loop keeps running code inside even when condition is false
import datetime
from pydub.playback import play
currentDate = datetime.datetime.now()
times = [12, 19, 23]
minutes = [53, 52, 51]
while True:
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)
即使 if 块内的条件不为真,此代码仍会继续播放“通告”。任何人都可以告诉我我在这里应用的错误逻辑是什么。任何类型的帮助都会非常有帮助
“时间和分钟都是列表”
所以问题是您没有更新 CurrentDate
变量。
如果您在条件为真时 运行 程序,这将导致无限循环。
所以要解决这个问题,您只需更新该变量即可:
times = [12, 19, 23]
minutes = [53, 52, 51]
while True:
# Updating the date every frame
currentDate = datetime.datetime.now()
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)
因为有一个while True
。这意味着除非你 break
它,否则它将无限循环。我不知道你为什么想要一个无限循环,但这应该可以解决问题:
import datetime
from pydub.playback import play
currentDate = datetime.datetime.now()
times = [12, 19, 23]
minutes = [53, 52, 51]
# no while loop here
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)
import datetime
from pydub.playback import play
currentDate = datetime.datetime.now()
times = [12, 19, 23]
minutes = [53, 52, 51]
while True:
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)
即使 if 块内的条件不为真,此代码仍会继续播放“通告”。任何人都可以告诉我我在这里应用的错误逻辑是什么。任何类型的帮助都会非常有帮助
“时间和分钟都是列表”
所以问题是您没有更新 CurrentDate
变量。
如果您在条件为真时 运行 程序,这将导致无限循环。
所以要解决这个问题,您只需更新该变量即可:
times = [12, 19, 23]
minutes = [53, 52, 51]
while True:
# Updating the date every frame
currentDate = datetime.datetime.now()
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)
因为有一个while True
。这意味着除非你 break
它,否则它将无限循环。我不知道你为什么想要一个无限循环,但这应该可以解决问题:
import datetime
from pydub.playback import play
currentDate = datetime.datetime.now()
times = [12, 19, 23]
minutes = [53, 52, 51]
# no while loop here
for i in times:
for j in minutes:
if(currentDate.hour == i and currentDate.minute == j):
# print(os.getcwd())
index = minutes.index(j)+1;
print(index)
announce = AudioSegment.from_mp3(
f'{os.getcwd()}\audios\announcement_{index}.mp3')
play(announce)