如何将逗号放入整数输入中?

问题描述

所以,我正在制作一个使用日期时间的程序。当我尝试使用输入命令输入日期时间的时间时,每当我运行它时,它都会给我这个:

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)

* 表示获取列表并使用每个元素,就好像它是时间函数的单独输入一样。这需要输入字符串,用逗号分割它并将每个结果部分转换为整数(而不是字符串)。

使用这样的线程基本上会暂停脚本,直到声音播放完毕。