코딩도장 버전비교 문제 보다가 문의드립니다.
코딩도장 버전비교 문제 풀이에 보면 아래와 같이 풀이가 있던데요,
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 오후