一般来说,我对Python和编程都是非常陌生的,我已经在这个特定的问题上工作了大约四个小时。我正在尝试转换时间(例如12:30)到一个"if“语句中有用的东西。这是我到目前为止尝试过的:
time = input("Enter the time the call starts in 24-hour notation:\n").split(":")
if time >= 8:30 and time <= 18:00:
print("YES")
当尝试执行此操作时,我收到无效语法错误。当我尝试将时间转换为整数[callTime = int(time)]
时,我得到一个错误,指出
int()参数必须是字符串
这只是我正在解决的整个问题的一部分,但我认为如果我能从这个问题入手,我可以弄清楚其余的问题。尽管我不相信我被允许在这个特定的问题上使用datetime;但任何东西都会有帮助。
编辑:已更正的整数(时间)
发布于 2018-07-10 02:32:23
8:30
不是有效的数据类型。将其转换为整数以使其工作(8:30 =8小时,30分钟= 8*60+30分钟)
>>> time = input("Enter the time the call starts in 24-hour notation:\n").split(":")
Enter the time the call starts in 24-hour notation:
12:30
>>> time
['12', '30'] # list of str
>>> time = [int(i) for i in time] # will raise an exception if str cannot be converted to int
>>> time
[12, 30] # list of int
>>> 60*time[0] + time[1] # time in minutes
750
>>>
要在几秒钟内获得它,就像12:30:58
一样,对最后一行中的time_in_sec = time[0] * 3600 + time[1] * 60 + time[2]
做同样的事情。
由于模属性,可以保证只有一个“实时”时间对应于转换为整数的小时。
对于您的问题,创建一个返回int的函数to_integer(time_as_list)
,然后将user entry与to_integer('18:00'.split(':'))
和to_integer('8:30'.split(':'))
进行比较
发布于 2018-07-10 02:39:14
手动处理时间并不是微不足道的。我建议您使用支持时间转换、比较等功能的datetime
模块。
from datetime import datetime as dt
t = input("...")
t_object = dt.strptime(t, "%H:%M")
if t_object >= dt.strptime("8:30", "%H:%M") and \
t_object <= dt.strptime("18:00", "%H:%M"):
do_your_stuff()
发布于 2018-07-10 02:36:04
在Python需要数字或变量名的位置使用冒号。在下面的语句中:if time >= 8:30 and time <= 18:00:
,您需要将时间值放在引号("8:30"
)中,因为它们是非数字的。但是,您将遇到使用>=
和<=
语句比较两个非数字值的问题。比较只适用于实际值,冒号将值转换为字符串,而不是整型或浮点型。更好的做法是将时间转换为整数,方法是将冒号stripping出来进行比较和其他操作,然后根据需要添加回冒号。
https://stackoverflow.com/questions/51251934
复制相似问题