12小时制转24小时制时,如何将列表中的单个字符串转为整数?
12小时制转24小时制的问题解决
你的代码报错原因
- 第一段代码错误:
input().split(" ")执行后,hr24[0]是类似"11:00"的带冒号字符串,直接用int()转换会失败,因为int()只能解析纯数字组成的字符串。 - 第二段代码错误:
map(int, hr24[0])会遍历字符串的每个字符(包括冒号:),冒号无法转换为整数,直接触发报错;而且map()返回的是迭代器对象,不是你需要的小时数值。
正确实现方式
手动处理逻辑
先拆分时间和时段,再拆分小时和分钟,最后根据AM/PM调整小时数:
# 获取输入并拆分 time_input = input().strip() time_part, period = time_input.split(" ") hour_str, minute = time_part.split(":") hour = int(hour_str) # 处理24小时制转换 if period == "PM": if hour != 12: hour += 12 else: # AM时段 if hour == 12: hour = 0 # 格式化输出,确保小时是两位数字 print(f"{hour:02d}:{minute}")
测试输入11:00 PM,输出23:00;输入12:30 AM,输出00:30;输入12:00 PM,输出12:00,覆盖常见边界情况。
用Python内置datetime模块简化
利用strptime解析12小时制时间,再用strftime输出24小时制:
from datetime import datetime time_input = input().strip() # 解析输入为datetime对象 time_obj = datetime.strptime(time_input, "%I:%M %p") # 格式化为24小时制字符串 print(time_obj.strftime("%H:%M"))
这种方式无需手动处理边界情况,Python内置模块会自动处理所有规则,代码更简洁可靠。
内容的提问来源于stack exchange,提问作者rorycostigan
相关产品推荐
相关产品推荐

