algo lev-1 짝수와 홀수 (python)
정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요.
출처 : 프로그래머스 Level1
내가 푼 풀이
2로 나눴을 때 나머지가 0 이면 짝수, 아니면 홀수
def solution(num):
if num%2 == 0:
return 'Even'
else:
return 'Odd'
2로 나눴을 때 나머지가 1이면 True를 반환하기 때문에 (Bool 자료형), 1을 반환할 경우 홀수 아니면 짝수
def solution(num):
if num % 2:
return 'Odd'
else:
return 'Even'
- 불(bool) 자료형
- 참(True)과 거짓(False)의 두 가지 값을 가지고 있는 자료형
- 참 : 1 , 비어있지 않은 문자열,리스트, 튜플 딕셔너리 등등 (ex. python, [1,2,3])
- 거짓 : 0, None, 비어있는 문자열, 리스트, 튜플, 딕셔너리 등 (“”, [], (), {})
다른 사람의 풀이
def solution(num):
return num % 2 and "Odd" or "Even"
and
는 둘 다 참일 때, or
은 둘 중에 하나라도 참일 때 ‘참’
ex. 만약 num = 10일 경우
1) num % 2 == 0 (거짓)
2) num % 2 == 0 (거짓) and “Odd”(참) –> 거짓 and 참 = 거짓
3) 거짓 or “Even”(참) –> 거짓 or 참 = 참
4) 참의 결과인 “Even”을 반환
왜 num%2의 결과가 아닌 문자열들이 결과로 나오는지 궁금해서 하나하나 찍어보았다. and
는 앞 뒤 순서를 바꾸면 다른 결과가 출력되었다. 근데 또 or
의 경우는 다른 점이 없었다. 흐음…!?
num = 11
print( num % 2 and "Odd") # Odd
print( "Odd" and num % 2) # 1 (num%2)
# 이때 num % 2 == 1 (True)
print( num % 2 and "Odd" or "Even") # Odd
print("Odd" and num % 2 or "Even") # 1
num = 10
print( num % 2 or "Even") # Even
print( "Even" or num % 2) # Even
# 이때 num % 2 == 0 (Flase)
print( num % 2 and "Odd" or "Even") # Even
print("Odd" and num % 2 or "Even") # Even
?? 그냥 참을 만나면 바로 반환하는 것인가..??? 흑흑 잘 모르겠다.
Comments