강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

준상님의 프로필 이미지
준상

작성한 질문수

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

(기출) 2025년 1회 (1/3)

2025년 1회 (1/3) 29분 51초

해결된 질문

작성

·

17

0

29분 51초의 화면 기준으로 아래 코드를 보면 node가 None인지를 먼저 판단하는것 같습니다. 즉, 위 코드에 if가 2개 존재하는데, 그 중 오른쪽 if 조건을 먼저 판단하는 것 같습니다. 제가 제대로 알아들은게 맞을까요??

 

그런데
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"

print(result)

이 코드를 실행시켜보면, 왼쪽 성공이 출력됩니다. 그럼 왼쪽의 if를 먼저 판단한다는거같은데...

 

제가 어디서 잘못 생각하고 있을까요??

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요. Python의 삼항연산자는 왼쪽 if부터 평가합니다.

영상 안에 있는 슬라이드는 개념적으로는 맞는데 정확한 코드는 아닙니다.

A if 조건1 else B if 조건2 else C

 

영상 내의 코드 설명

return node.value if level % 2 else 0 + sum(...) if node else 0

 

이걸 괄호로 변경해서 바꾸자면

return (node.value if level % 2 else (0 + sum(...) if node else 0))

평가 순서:

  1. level % 2 를 먼저 봄 (왼쪽 if)

  2. True면node.value 리턴 (오른쪽 if는 아예 보지 않음 )

  3. False면 → 그제야 오른쪽 if node else 0 을 평가

즉, "node가 None인지 먼저 판단한다"는 것은 오해입니다.
level % 2가 False일 때만 if node가 실행됩니다.

 

삼항연산자를 보면 왼쪽 먼저 보시고 오른쪽으로 흘러간다고 생각하시면 됩니다.

 


 

질문 주신 것을 보면,

result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"

이 코드의 순서는 이렇습니다.

  • 왼쪽 if True → 바로 True

  • "왼쪽 성공!" 리턴

  • 1 / 0실행조차 안 됨 → ZeroDivisionError 없이 정상 출력

0

안녕하세요, 인프런 AI 인턴입니다. 준상님.

Python의 삼항 연산자인 조건부 표현식은 왼쪽부터 오른쪽 순서로 평가됩니다. 즉, 전체 조건을 평가하기 전에 왼쪽의 if 조건을 먼저 검사합니다. 삼항 연산자 구문 참일 때 값 if 조건 else 거짓일 때 값조건을 평가하여 참이면 참일 때 값을, 거짓이면 거짓일 때 값을 반환합니다.

주신 코드:

result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"

에서, True 라는 확실히 참인 조건이 먼저 나왔기 때문에, 이 삼항 연산식의 첫 번째 조건이 참으로 평가됩니다. 그래서 뒤의 값들은 확인하지 않고 “왼쪽 성공!“이 출력됩니다. Python은 단락 평가(short-circuit evaluation)를 활용하여 첫 번째 조건이 참이면 나머지 조건을 확인하지 않기 때문입니다.

이 과정에서 1 / 0 == 1 조건은 평가되지 않았습니다. 왜냐하면 첫 번째 True가 이미 결과를 결정했기 때문입니다.

이와 유사한 부분을 다룬 답변 링크를 참고하시면 도움될 수 있습니다:
- 29:27 Python 삼항연산자 해설 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

준상님의 프로필 이미지
준상

작성한 질문수

질문하기