为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在Python 3中将时间转换为整数

尝试在Python 3中将时间转换为整数

慕森卡 2021-04-04 16:48:46
我一般对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;一切都会有帮助的。编辑:更正的诠释(时间)
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

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]在最后一行进行相同的操作。


由于具有模数属性,可以保证只有一个“真实”时间对应于转换为整数的小时。

对于您的问题,创建一个to_integer(time_as_list)返回int的函数,然后将用户输入与to_integer('18:00'.split(':'))和进行比较。to_integer('8:30'.split(':'))


查看完整回答
反对 回复 2021-04-27
?
手掌心

TA贡献1942条经验 获得超3个赞

手动处理时间并非易事。我建议您使用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()


查看完整回答
反对 回复 2021-04-27
?
喵喔喔

TA贡献1735条经验 获得超5个赞

我对这个问题的看法(没有datetime):


answer = input("Enter the time the call starts in 24-hour notation:\n")

t = tuple(int(i) for i in answer.split(':'))


if (8, 30) <= t <= (18, 0):

    print("YES")


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 319 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信