I';我在最后5行的编码中遇到了麻烦。I';我是python新手,有人能教我怎么做吗?

I';我在最后5行的编码中遇到了麻烦。I';我是python新手,有人能教我怎么做吗?,python,Python,//如何通过 12小时制和24小时制? //第一个是关于正常的时钟转换,我相信 def main(): in1 = input("Enter the Hour: ") num = 0 + eval(in1) # eval() convert the input string into a number if (num <= 0) or (num >= 25): print(in1,'is out of range') r

//如何通过
12小时制和24小时制? //第一个是关于正常的时钟转换,我相信

def main():

     in1 = input("Enter the Hour: ")

     num = 0 + eval(in1)     # eval() convert the input string into a number
    if (num <= 0) or (num >= 25):
      print(in1,'is out of range')
      return 0   #if it is over 25, print and terminate
    else:
      num1 = num % 12  #2%12 =2;

    if(num == 24):
      f12 = "MIDNIGHT"
    elif(num < 10):
      f12 = "0"+str(num1)+" AM" # 1-9, convert 1 to 01 
    elif(num > 12):
      f12 =  str(num1)+" PM"  # >12, convert 13 to 1
      #f12 =  str(num-12)+" PM"  # >12, convert 13 to 1
    elif num == 12:
      f12 = "NOON"
    else:
      f12 = str(num1)+" AM" # 10,11, 12
    print("Time", in1,  "using 12-hour clock: ",f12)

    if(num == 24):
       ________________________________
    elif(num == 12):
       ________________________________
    elif(num < 10):
       ________________________________
    else:
       ________________________________
    print("Time", in1,  "using 24-hour clock: ",f24)
    main()
def main():
in1=输入(“输入小时:”)
num=0+eval(in1)#eval()将输入字符串转换为数字
如果(num=25):
打印(在1中,“超出范围”)
返回0#如果超过25,则打印并终止
其他:
num1=num%12#2%12=2;
如果(num==24):
f12=“午夜”
elif(数值<10):
f12=“0”+str(num1)+“AM”#1-9,将1转换为01
elif(数值>12):
f12=str(num1)+“PM”#>12,将13转换为1
#f12=str(num-12)+“PM”#>12,将13转换为1
elif num==12:
f12=“中午”
其他:
f12=str(num1)+“AM”#10,11,12
打印(“时间”,输入1,“使用12小时时钟:”,f12)
如果(num==24):
________________________________
elif(num==12):
________________________________
elif(数值<10):
________________________________
其他:
________________________________
打印(“时间”,in1,“使用24小时时钟:”,f24)
main()
我知道要12小时,但最后5行是关于
24小时转换,我猜?我刚刚开始在线学习python,遇到了这个问题。如果你能向我解释并解释一下,我将非常感谢你的帮助。

为什么要重新发明轮子

import datetime
now = datetime.datetime.now()
print "12hr: %s" % (datetime.datetime.strftime(now,"%I:%M:%S %p"))
print "24hr: %s" % (datetime.datetime.strftime(now,"%H:%M:%S"))

如果s处理12小时时钟的特殊情况,则第一个
块,例如,是午夜
中午
上午/下午
。要求您完成24小时时钟的特殊情况,并将结果分配给变量
f24
。我假设
24:f24='MIDNIGHT'
12:f24='NOON'
,您不需要为
>12
做任何特殊的事情,但是如果
<10
您需要像在12小时时钟中一样填充
0

在python中有很多更简单的方法来实现这一点,但我认为这是一个教学材料,采用这种方法是有原因的。

几点评论

首先,这不是很好的代码。 其次,如果您不确定发生了什么,请运行程序并查看。对于这样一个小脚本,这并不麻烦

现在是代码

num是用户输入的24小时时钟小时,转换为整数。f12是12小时时钟上的等效时间,作为字符串

num1是十二小时时钟上的小时,由

num1 = num % 12
这里的%运算符给出除以12的余数,因此14%12=2

if num == 24:
   f12 = "MIDNIGHT"
我想这是清楚的

elif(num < 10):
      f12 = "0"+str(num1)+" AM" # 1-9, convert 1 to 01
在下午,24小时的时间是不同的,所以我们使用num1表示小时,并连接“PM”。注意字符串“PM”中的空格。这是为了避免“PM”与时间冲突。出于某种原因,脚本没有在下午追加0到1位数的小时数。我怀疑这是作者的疏忽

我想剩下的代码现在已经很清楚了

这不是编写代码的好方法。最好先计算所需的数据,然后用一段代码进行输出。这将避免一位数小时的错误(我认为是这样)

我建议您尝试清理代码,现在您已经理解了它

elif(num > 12):
  f12 =  str(num1)+" PM"  # >12, convert 13 to 1