2016-10-10 2 views
-1

기본적으로이 할당에서 우리는 ran (hour, min) :의 값을 기반으로 시간을 만들어야합니다. 아래에 내가 가지고있는 코드와 내가받은 오류 메시지를 게시 할 것입니다. 내 코드가 정말로 나쁘거나 뭔가 빠졌는가? 내재적 str에 반대 'INT'을 변환 할 수 없습니다 "가 무엇을 의미 하는가 다음 줄에.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 

당신이 문자열을 연결하는 시도를 문자열을 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을 가지고 있습니다. 다음은 예입니다

  1. 당신은 당신의 코드에서 인수없이 호출 : 약자로

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

    , 코드는 몇 가지 문제가 있습니다. 당신은 그것의 인수보다 오히려 변수 내부의 포맷 기능을 사용하는

  2. : 당신과 같이 키워드 매개 변수를 전달까지 혼합 한 것으로 나타났습니다 :
 
>>> '{a}:{b}'.format(**{'a':1, 'b':2}) 
'1:2' 
  1. 함수를 사용하여 아무 것도 반환하지 않습니다.
  2. min은 내장 함수이기 때문에 변수에 나쁜 이름입니다. 여기

하나 개의 블록에 최선을 다하고 훨씬 쉬운 방법입니다 : 내가 잘못 형식을 사용할 생각

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

{: 02d}를 제외한 모든 것을 이해합니다. 그게 무슨 뜻인지 설명해 주시겠습니까? – user6946850

0

당신은 'STR'연결할 및 'INT'객체 (분 = "0"수 없습니다 + 분). 내 생각에이 작품 :

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