MISPELL과 CONVERT의 원인 오류를 잘 모르겠습니다.(파이썬코드입니다.)

  • kaipia
    kaipia

    일단 MISPELL코드입니다.

    cases = int(input())
    count = 1
    
    while cases > 0:
        result = []
        input_string = input()
        length = int(len(input_string))
    
        number = int(input_string[0])
    
        if number == 1:
            result.append(input_string[3:length+2+1])
        else:
            result.append(input_string[2:number+2-1])
            result.append(input_string[number+2:length+2+1])
    
        print(count, "".join(result).strip())
    
        count += 1
        cases -= 1
    

    입력을 쭉 받은다음에 index가 0인요소를 삭제할 숫자로 한칸을 띄고 그 다음부터는 해당 strin으로 처리하였습니다.

    CONVERT도 잘 실행이되는데 어느 부분에서 문제가 나는지를 잘 모르겠습니다.

    cases = int(input())
    count = 1
    pounds = 2.2046
    kilograms = 0.4536
    gallons = 0.2642
    liters = 3.7854
    
    while cases > 0:
        result = []
        input_strings = input()
    
        number, measures = input_strings.split(' ')
    
        if str(measures) == 'kg':
            total_result = round(float(number)*pounds, 4)
            result.append(str(total_result))
            if float(number) == 0:
                result.append('000')
            result.append(" ")
            result.append('lb')
        elif str(measures) == 'l':
            total_result = round(float(number)*gallons, 4)
            result.append(str(total_result))
            if float(number) == 0:
                result.append('000')
            result.append(" ")
            result.append('g')
        elif str(measures) == 'lb':
            total_result = round(float(number)*kilograms, 4)
            result.append(str(total_result))
            if float(number) == 0:
                result.append('000')
            result.append(" ")
            result.append('kg')
        elif str(measures) == 'g':
            total_result = round(float(number)*liters, 4)
            result.append(str(total_result))
            if float(number) == 0:
                result.append('000')
            result.append(" ")
            result.append('l')
    
        print(count, "".join(result))
    
        count += 1
        cases -= 1
    

    이번에는 입력을 받아서 숫자와 단위를 나눈다음에 해당 단위에 따라 IF/ELIF로 처리하였고, 0이입력되면 0.0만 출력되길래 뒤에 0인경우 000을 붙이도록 하였습니다.
    도움을 주시면 감사하겠습니다.


    8년 전
1개의 댓글이 있습니다.
  • Being
    Being

    우선 운영진 권한으로 글을 수정하여 코드가 구문 강조되도록 했으니, 다음부터는 참고하셔서 질문 부탁드립니다. 또, 두 개의 서로 다른 문제에 대한 질문은 나누어 올려주시길 바랍니다.

    MISPELL의 경우 M이 한 자리 숫자라고 임의로 가정하신 부분이 잘못되었습니다. 문제를 보시면 단어의 길이보다 작거나 같다고 되어 있습니다.

    CONVERT의 경우 유효숫자를 지정하여 출력하실 때 저런 식으로 처리하시면 잘 되지 않습니다. 예를 들어 결과가 1.0에 아주 가까운 값이 나왔다면 언어와 구현체에 따라 어떤 문자열이 출력될지는 알 수 없습니다. http://stackoverflow.com/questions/1995615/how-can-i-format-a-decimal-to-always-show-2-decimal-places 등의 문서를 참고해 보세요.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.