두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.
-1,000 ≤ a, b ≤ 1,000
입출력 예
a b flag result
-4 7 true 3
-4 7 false -11
입출력 예 #1
예제 1번에서 flag가 true이므로 a + b = (-4) + 7 = 3을 return 합니다.
입출력 예 #2
예제 2번에서 flag가 false이므로 a - b = (-4) - 7 = -11을 return 합니다.
def solution(a, b, flag):
answer = 0
if flag == True :
answer = a+b
else :
answer = a-b
return answer
if flag == True: 말고, if flag: 만 적어도 성립하는데, 이유가 궁금해서 찾아봤더니 다음과 같다.if flag == True:와 if flag:의 차이점
if flag == True:는 flag가 명시적으로 True인지를 비교하는 것입니다. 즉, flag가 True일 경우에만 조건이 True로 평가된다.
if flag:는 flag의 불리언 값이 True인지 아닌지를 암묵적으로 평가한다. 즉, flag가 True로 평가되는 값일 경우 조건이 True로 평가된다.
두 구문이 같아지는 이유
파이썬에서 if flag:는 flag의 불리언 값(즉, True 또는 False)을 평가하기 때문이다. flag가 True로 평가되면 조건문이 실행되며, flag가 False로 평가되면 실행되지 않는다. 이 때문에 if flag == True:와 if flag:는 사실상 동일한 조건을 비교하는 구문이 된다.
flag = True
if flag == True: # flag가 True일 경우 실행된다.
print("flag는 True입니다!")
if flag: # flag가 True일 경우 실행된다.
print("flag는 True입니다!")
둘 다 동일한 결과를 출력한다: "flag는 True입니다!"
if flag: 방식이 더 간결하고 직관적이어서 더 많이 사용된다.if flag = true : 라고 작성 시, flag 변수에 true 값을 대입하려는 시도로 해석된다. 이 구문은 파이썬에서 문법 오류(SyntaxError)를 일으키며, 파이썬에서는 true가 아니라 True가 올바른 불리언 값이다.
def solution(a, b, flag):
if flag: return a+b
return a-b
def solution(a, b, flag):
return a + b if flag else a - b
solution = lambda a,b,f:a+b if f else a-b
def solution(a, b, flag):
if flag == 1:
return a + b
return a - b
def add(a, b):
return a + b # 이 부분에서 값을 반환
result = add(3, 5) # 함수 호출 결과를 result 변수에 저장
print(result) # 출력: 8
answer = 42 # 'answer'라는 변수에 42를 저장
print(answer) # 출력: 42
def get_answer():
answer = 42 # 'answer'는 변수
return answer # 'return'은 값을 반환
result = get_answer() # 함수 호출로 반환된 값을 result에 저장
print(result) # 출력: 42
=: 대입 연산자, 변수에 값을 할당한다.
==: 비교 연산자, 두 값이 같은지 비교한다.
조건이 True로 평가되는 값들:
- True
- 숫자에서 0을 제외한 모든 값 (예: 1, 2, 100, -5 등)
- 비어 있지 않은 문자열, 리스트, 튜플 등 (예: "hello", [1, 2], (3, 4) 등)
- 그 외에도 대부분의 값들은 기본적으로 True로 평가됩니다.
조건이 False로 평가되는 값들:
- False
- 숫자 0
- 빈 문자열 "", 빈 리스트 [], 빈 튜플 () 등