Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确比较时间(以分钟和小时表示)?_Python - Fatal编程技术网

Python 如何正确比较时间(以分钟和小时表示)?

Python 如何正确比较时间(以分钟和小时表示)?,python,Python,给定 变量,确定分配是否仍然合格 提交。如果时间 由当前小时、当前分钟和 当前_段在到期时间表示的时间之前, 到期日分钟和到期日部分 我的代码是 current_hour = 12 current_minute = 37 current_section = "PM" due_hour = 9 due_minute = 0 due_section = "AM" total_min_cur=((当前小时*60)+当前分钟) 总最小到期日=((到期日小时*60)+到期日分钟) 打印((总最小当前=当

给定 变量,确定分配是否仍然合格 提交。如果时间 由当前小时、当前分钟和 当前_段在到期时间表示的时间之前, 到期日分钟和到期日部分

我的代码是

current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
total_min_cur=((当前小时*60)+当前分钟)
总最小到期日=((到期日小时*60)+到期日分钟)
打印((总最小当前=当前部分))
我们使用due\u minute=0、current\u hour=12、current\u minute=37、due\u section=“AM”、due\u hour=9、current\u section=“AM”测试了您的代码。我们希望您的代码打印以下内容:

真的

然而,它打印了以下内容:


False

首先对字符串执行
当前时间
12=
<代码>AM
不大于
PM
(按字母顺序排列)。所以
False和False
False
其次,比较字符串是危险的,因为:

total_min_cur=((current_hour*60)+current_minute)
total_min_due=((due_hour*60)+due_minute)
print((total_min_cur<=total_min_due)  and (due_section >= current_section) )
[1]中的
:“am”<“pm”
Out[1]:正确
在[2]中:“上午”<“下午”
Out[2]:False
您应该执行此
打印((总计\分钟\当前>总计\分钟\到期)和(到期\部分<当前\部分))
,您将得到
真值
。 将
due_section
current_section
更改为枚举、对象或布尔值(es:
morning=True
)。
或者至少转换为相同的大小写
s.lower()

尝试在24小时内转换解决方案,然后比较结果。
当到期日部分和当前日部分对于您的案例都相等时。您的程序将在11:59之前对所有total_min_cur和total_min_到期时间正确。在此之后,您的程序将考虑total_min_cur>total_min_due,但实际上情况正好相反

库纳尔是正确的。12:01 AM比时钟上的1:01 AM早得多。军事时间是00:01对01:01。这是你应该做的事情

In [1]: "am" < "pm"
Out[1]: True

In [2]: "am" < "Pm"
Out[2]: False
total\u min\u cur=(当前时间%12)*60+当前时间
总到期时间=(到期时间%12)*60+到期时间
打印(当前_段<到期_段或(当前_段==到期_段和当前_时间<到期_时间))

这将有助于解决问题

total_min_cur = (current_hour % 12) * 60 + current_minute
total_min_due = (due_hour % 12) * 60 + due_minute
print(current_section < due_section or (current_section == due_section and current_time < due_time))
current_hour=12
当前分钟=37
当前节=“PM”
到期时间=9小时
到期日/分钟=0
到期日
如果当前_段==“AM”和当前_小时==12:
当前时间24=0+当前分钟
#打印(当前时间24)
elif current_section==“AM”:
当前时间24=当前小时*60+当前分钟
#打印(当前时间24)
elif当前_段==“PM”:
当前时间24=(当前小时+12)*60+当前分钟
#打印(当前时间24)
如果到期时间段=“上午”和到期时间==12:
到期时间24=0+到期分钟
#打印(到期时间24)
elif due_section==“AM”:
到期时间24=到期时间*60+到期分钟
#打印(到期时间24)
elif到期日部分==“PM”:
到期时间24=(到期时间+12)*60+到期分钟
#打印(到期时间24)

打印(current_time_24如图所示,您的代码的前两行是不相关的,它们更新的变量都没有在
print
语句中使用。我不知道您期望的是什么。请编辑标题以解释您的问题-这将使您的问题可搜索(通过一些关键字比“what's Out”更有意义)例如,如何正确比较时间(以分钟和小时表示)(选择最适合您实际需要的措辞)。我想检查我是否可以提交作业,即到期时间仍然大于当前时间uhh可能是因为
当前部分
应该是
'AM'
而不是
'PM'
(如代码中所示)我在edx平台上编写了这个逻辑,他们对它进行了测试并给出了输出,我的逻辑正确吗?我认为AM和PM是内置函数,起初我使用==但运行后我将其更改为>=P。S:我可以只使用逻辑运算符和变量、数学运算符来解决这个问题吗?是的,你可以,但其他人很难理解:)。如果将
current_section
更改为
current_section.lower()
,则可以使用逻辑操作数,对于
due_section
,如果不能这样做,则可以假设输入为大写(或小写)。请记住,可以使用德摩根定律将
更改为
current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
if current_section=="AM" and current_hour==12:
    current_time_24=0+current_minute
    # print(current_time_24)
elif current_section=="AM":
    current_time_24=current_hour*60+current_minute
    # print(current_time_24)
elif current_section=="PM":
    current_time_24=(current_hour+12)*60+current_minute
    # print(current_time_24)

if due_section=="AM" and due_hour==12:
    due_time_24=0+due_minute
    # print(due_time_24)
elif due_section=="AM":
    due_time_24=due_hour*60+due_minute
    # print(due_time_24)
elif due_section=="PM":
    due_time_24=(due_hour+12)*60+due_minute
    # print(due_time_24)

print(current_time_24<due_time_24)