如何将24小时制的小时变量转换为12小时制格式?
问题分析
你的代码有三个核心问题:
- 用while循环完全多余,24小时转12小时是固定的条件判断,不需要循环迭代
- 转换逻辑错误:比如输入13,你的代码会算出
13%12 +1 = 2,但实际13点应该是1点 - 没处理0点(即24点)的情况,也没区分上午(AM)和下午(PM),不符合12小时制的完整格式
解决方法
直接用条件判断就能搞定,核心逻辑是:
- 当小时为0或12时,12小时制显示12
- 小时大于12时,减去12得到对应数值
- 小时小于12时,保持原数值不变
- 同时区分AM/PM:小于12是AM,其余是PM
完整代码示例
hour = 12 # 可以替换成0-23之间的任意值 # 计算12小时制的小时数 if hour == 0 or hour == 12: twelve_hour = 12 elif hour > 12: twelve_hour = hour - 12 else: twelve_hour = hour # 判断上午下午 period = "AM" if hour < 12 else "PM" # 打印结果 print(f"{twelve_hour} {period}")
测试不同情况
- 输入0 → 输出
12 AM - 输入10 → 输出
10 AM - 输入12 → 输出
12 PM - 输入15 → 输出
3 PM - 输入23 → 输出
11 PM
内容的提问来源于stack exchange,提问作者Dante Taviantz
相关产品推荐
相关产品推荐

