current_hour = 12
current_minute = 37
current_section = "PM"
due_hour = 9
due_minute = 0
due_section = "AM"
给出当前时间和截止时间 上面的变量,确定分配是否仍然符合条件 提交。如果时间合适,则分配是合格的 由current_hour,current_minute和 current_section在due_hour表示的时间之前, due_minute和due_section。
我的代码是
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) )
我们测试了您的代码,其中due_minute = 0,current_hour = 12,current_minute = 37,Due_section =“ AM”,due_hour = 9,current_section =“ AM”。我们希望您的代码能够打印出此内容:
是
但是,它打印了这个:
错误
答案 0 :(得分:1)
尝试在24小时内转换解决方案,然后比较结果。 当您的情况下Due_section和current_section相等时。您的程序在11:59之前对所有total_min_cur和total_min_due都是正确的。之后,您的程序正在考虑total_min_cur> total_min_due,但实际上是相反的。
答案 1 :(得分:1)
这将有助于解决它
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)
答案 2 :(得分:0)
首先current_hour<=due_hour
-> 12<=9
是False
并且您正在使用>=
进行字符串化。 AM
不大于PM
(按字母顺序排列)。所以False and False
是False
其次,您正在比较危险的字符串,因为:
In [1]: "am" < "pm"
Out[1]: True
In [2]: "am" < "Pm"
Out[2]: False
您应该这样做print((total_min_cur>total_min_due) and (due_section < current_section) )
,您会得到True
。
将due_section
和current_section
更改为有用的内容,例如枚举,对象或布尔值(例如:morning=True
)。
或至少转换为相同的大小写s.lower()