코딩도장 버전비교 문제 보다가 문의드립니다.

코딩도장 버전비교 문제 풀이에 보면 아래와 같이 풀이가 있던데요,

from itertools import zip_longest

def compare(left, right):
    left_vars = map(int, left.split('.'))
    right_vars = map(int, right.split('.'))
    for a, b in zip_longest(left_vars, right_vars, fillvalue = 0):
        if a > b:
            return '>'
        elif a < b:
            return '<'
    return '='

CASES = [['0.0.2', '0.0.1'],
         ['1.0.10', '1.0.3'],
         ['1.2.0', '1.1.99'],
         ['1.1', '1.0.1']]

if __name__ == '__main__':
    for case in CASES:
        print('{0[0]} {1} {0[1]}'.format(case, compare(*case)))

여기서 compare합수안의 for문의 동작을 보면, zip_longest의 index 0 부터 끝까지 순차적으로 확인 시 조건에 맞는 결과가 발생할 경우 바로 return값을 주고 조건에 맞는 결과값이 없는 left, right의 값이 동일한 경우 for문에서 return값없이 for문 밖의 return값인 '='를 돌려주는데요

=================================================

from itertools import zip_longest

a = input('입력값을 넣으시오: ')
b = input('입력값을 넣으시오: ')

num1 = map(int, a.split('.'))
num2 = map(int, b.split('.'))

for a, b in zip_longest(num1, num2, fillvalue = 0):
    if a > b:
        print(a, '>', b)
    elif a < b:
        print(a, '<', b)
print(a, '=', b)

이런식으로 함수를 만들지 않고 바로 사용을 해보려고 하였을때를 보니 index 0부터 끝까지 각각의 값을 print해주고 있습니다.
물론 for를 벗어난 마지막 print구문을 default로 같이 프린트 해주고 있구요,,

그냥 생긴것만 봣을때는 별 차이를 모르겠는데,,,왜 동작이 이렇게 다른지 이해가 안가서 문의드립니다..ㅜ

sujin87.lee 441

M 2020년 8월 26일 5:21 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

함수는 리턴으로 뒷 문장들이 실행되지 않지만 두번째 코드는 리턴대신 print로 출력하기 때문에 전부 나오는 것 같습니다.

박응용

M 2020년 8월 26일 5:25 오후