问题描述
所以,我正在制作一个使用日期时间的程序。当我尝试使用输入命令输入日期时间的时间时,每当我运行它时,它都会给我这个:
Traceback (most recent call last):
File "c:\Users\461gdc15\OneDrive\Alarm.py",line 10,in <module>
start = datetime.time(input())
TypeError: an integer is required (got type str)
所以,我尝试要做的是添加一个逗号,让它在两个小时之间的某个时间熄灭。有没有人对如何在整数输入中添加逗号有任何建议? 我被要求添加错误回溯。我想就是这样。
解决方法
简短的回答是:你不能。 整数只是一个数字。每当您添加另一个字符时,它就会变成一个字符串。实际上,默认情况下,输入函数总是返回一个字符串。 您可以做的是使用 str.split(",") 方法在逗号之间拆分字符串,创建这些元素的列表,然后将每个值单独转换为整数,最后将其提供给 datetime.time()函数调用。
time_input = input("Insert your time. (Format: year,month,day)")
time_input = time_input.split(",")
start = datetime.time(int(time_input[0]),int(time_input[1]),int(time_input[2]))
,
import datetime
import time
import winsound
now = datetime.datetime.now()
Current_time = now.strftime("%H:%M")
print("When do you want your alarm to go off? ")
time_input = input("Insert your time. (Format: Hour,Minute)")
end_time_input = input("If you don't turn it off when it goes off,when do you want it to stop? ")
time_input = time_input.split(",")
end_time_input = end_time_input.split(",")
start = datetime.time(*[int(x) for x in input().split(',')])
end = datetime.time(*[int(x) for x in input().split(',')])
while start <= now.time() <= end:
if now.time() <= datetime.time(11,59,59):
print("It is currently",now.time(),"AM.")
elif now.time() >= datetime.time(11,"PM.")
winsound.PlaySound("C:/Music/Song")
##The path for my music ^^^ is too long for StackOverflow
我使用了 (*[int(x) for x in input().split(',')])
的东西,现在代码只是在提示后停止....vvv
##When do you want your alarm to go off?
##Insert your time. (Format: Hour,Minute)8,50,30
##If you don't turn it off when it goes off,when do you want it to stop? 9,00,00
这就是它现在给我的东西,我已经等了很久,什么也没发生。 旁注...还为闹钟添加了一种方式来判断是上午还是下午。
,
import datetime,time,winsound,threading
print("When do you want your alarm to go off? ")
start = datetime.time(*[int(x) for x in input('Insert your time. (Format: Hour,Minute)\n > ').split(',')])
end = datetime.time(*[int(x) for x in input("If you don't turn it off when it goes off,when do you want it
to stop?\n > ").split(',')])
while True:
now = datetime.now().time()
if start <= now <= end:
print("It is currently",now.strftime('%I:%M %p'))
t = threading.Thread(target=winsound.PlaySound,args=["C:/Music/Song",0])
t.start()
t.join()
time.sleep(1)
* 表示获取列表并使用每个元素,就好像它是时间函数的单独输入一样。这需要输入字符串,用逗号分割它并将每个结果部分转换为整数(而不是字符串)。
使用这样的线程基本上会暂停脚本,直到声音播放完毕。