2016-10-10 67 views
-1

基本上在这个任务中,我们必须根据ran(hour,min)的值创建一个时间:。下面我会发布我有的代码,然后发布我收到的错误消息。我的代码是否真的很糟糕,或者我错过了什么?这是什么意思“无法将‘诠释’对象隐含str的使用.format创建时间戳()

def show_time(hour,min): 
if(hour > 12): 
    hour = hour -12 
if(min < 10): 
    min = "0"+min 
print("{hour}:{min}".format(show_time())) 

Traceback (most recent call last): 
    File "zyLabsUnitTestRunner.py", line 10, in <module> 
    passed = test_passed(test_passed_output_file) 
    File "/home/runner/local/unit_test_student_code/zyLabsUnitTest.py", line 33, in test_passed 
    ans = show_time(hour,min) 
    File "/home/runner/local/unit_test_student_code/main.py", line 15, in show_time 
    min = "0"+min 
TypeError: Can't convert 'int' object to str implicitly 
+0

谢谢你们的帮助!现在我只需要弄清楚如何整合AM和PM哈哈。 Idk如何在信用到期时给予信用,所以如果有人想放弃提示,我会全力以赴。 – user6946850

回答

0

在下面一行:

if(min<10): 
    min = "0"+min 

您正试图将字符串和一个整数,这是python无法做到的。要将字符串转换为int,使用int(str),并将int转换为字符串,请使用str(int)

0

原因y你得到这个错误是因为你连接了"0"(一个字符串)和min,这是一个整数。

>>> '0' + 3 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: Can't convert 'int' object to str implicitly 

你会铸造min作为字符串避免此:

>>> '0' + str(3) 
'03' 

最好的解决办法,不过,是保存这种格式化的 - 你猜对了 - str.format()!它有一个rich syntax,它允许你保持他们所属的这些转换。这里有一个例子:

>>> '{:02d}'.format(3) 
'03' 

既然这样,你的代码中有几个问题:

  1. 要调用它,而不在您的代码段的论点。
  2. 您正在使用可变内部格式化功能,而不是在它的参数:你可能在混合起来传递关键字参数,如下所示:
 
>>> '{a}:{b}'.format(**{'a':1, 'b':2}) 
'1:2' 
  • 你没有使用该功能返回任何东西。
  • min由于它是内置函数,因此对于变量来说名称不合适。
  • 这里是一块做的一切的更简单的方法:

    print("{}:{:02d}".format(hour % 12, minute)) 
    
    +0

    我明白除{:02d}以外的所有内容,您能解释一下这是什么吗? – user6946850

    0

    我想你使用的格式不正确,现在不能连接“海峡”和“廉政”的对象(分钟=“0” +分钟)。我认为这是有效的:

    def show_time(hour,min): 
        if(hour > 12): 
         hour = hour -12 
        if(min < 10): 
         min = "0" + str(min) 
        print "{}:{}".format(hour, min)