Python 3.x 奇怪的python3字符串行为
下面是将12小时时间格式转换为24小时格式的代码。除了12小时的上午时间(1:00:00至11:59:59)表现怪异且仅返回0外,一切正常 代码:Python 3.x 奇怪的python3字符串行为,python-3.x,string,Python 3.x,String,下面是将12小时时间格式转换为24小时格式的代码。除了12小时的上午时间(1:00:00至11:59:59)表现怪异且仅返回0外,一切正常 代码: def timeConversion(s): times = s.split(":") hour = int(times[0]) minutes = times[1] seconds = times[2][:-2] timemod = times[-1][2:] military_hour=0
def timeConversion(s):
times = s.split(":")
hour = int(times[0])
minutes = times[1]
seconds = times[2][:-2]
timemod = times[-1][2:]
military_hour=0
if timemod=="AM" :
if hour == 12 :
miltary_hour = 0
else:
miltary_hour = hour
elif timemod == "PM" :
if hour == 12 :
military_hour = hour
else:
military_hour = hour + 12
if military_hour < 10 :
military_hour = "0" + str(military_hour)
else:
military_hour = str(military_hour)
return ":".join([military_hour,minutes,seconds])
## below 2 are incorrect
print(timeConversion("9:30:10AM"))
print(timeConversion("6:00:00AM"))
## these are correct
print(timeConversion("12:00:00AM"))
print(timeConversion("12:00:00PM"))
print(timeConversion("11:59:59PM"))
为什么中午之前的上午时间总是返回00而不是实际小时 你可以试试这个:
time_12 = input().strip()
time_in_pm = time_12[-2:].lower() == 'pm'
time_list = list(map(int, time_12[:-2].split(':')))
if not time_in_pm and time_list[0] == 12:
time_list[0] = 0
if time_in_pm and time_list[0] < 12:
time_list[0] += 12
print(':'.join(map(lambda x: str(x).rjust(2, '0'), time_list)))
time_12=input().strip()
time_in_pm=time_12[-2:].lower()=='pm'
time_list=list(映射(int,time_12[:-2]。拆分(':'))
如果时间不在时间列表[0]==12:
时间列表[0]=0
如果时间\u在\u pm和时间\u列表[0]<12:
时间列表[0]+=12
打印(“:”.join(映射(lambda x:str(x).rjust(2,'0'),时间列表)))
或者您也可以使用python日期时间库。您在
AM
逻辑中拼错了millitary\u hour
在这里:
你的if-else块在AM情况下是相同的?我有打字错误。我已经编辑了代码,但仍然有问题。你是最好的。我困了,不能清晰地思考。这确实是代码中的“愚蠢”错误。修复变量名后,我看到了正确的结果。@Prithi。我建议删除这个问题。这太具体了,对任何人都没有多大用处else@paradoxlover. 我想是的,假设OP可以删除你的答案。但你们会很快把它拿回来的,看起来是物理学家对的。。。社区是第一位的。是的,我会把它拿回来;)。无法删除。堆栈溢出不允许我。我想我得留下来。
time_12 = input().strip()
time_in_pm = time_12[-2:].lower() == 'pm'
time_list = list(map(int, time_12[:-2].split(':')))
if not time_in_pm and time_list[0] == 12:
time_list[0] = 0
if time_in_pm and time_list[0] < 12:
time_list[0] += 12
print(':'.join(map(lambda x: str(x).rjust(2, '0'), time_list)))
if timemod=="AM" :
if hour == 12 :
miltary_hour = 0
else:
miltary_hour = hour