2025년 1회 (1/3) 29분 51초
29분 51초의 화면 기준으로 아래 코드를 보면 node가 None인지를 먼저 판단하는것 같습니다. 즉, 위 코드에 if가 2개 존재하는데, 그 중 오른쪽 if 조건을 먼저 판단하는 것 같습니다. 제가 제대로 알아들은게 맞을까요??
그런데
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"
print(result)
이 코드를 실행시켜보면, 왼쪽 성공이 출력됩니다. 그럼 왼쪽의 if를 먼저 판단한다는거같은데...
제가 어디서 잘못 생각하고 있을까요??
답변 2
1
안녕하세요. 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))평가 순서:
level % 2를 먼저 봄 (왼쪽 if)True면 →
node.value리턴 (오른쪽 if는 아예 보지 않음 ✅)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 삼항연산자 해설 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년2회 실기기출은 언제쯤...
0
24
2
이론 공부법 요약본 버전 업데이트 문의
0
21
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
55
2
조건 반복문 질문: for 문 ?
0
63
1
정처기 26-2회. 9번 질문드립니다!
0
80
1
이론 보면서 질문이 있습니다.
0
78
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
88
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
149
2
262 정처기 실기 C언어코딩
0
47
1
정보처리기사 262 실기 Hash(해시) 질문
0
80
2
static 변수 질문입니다.
0
62
2
파이썬 4강 질문입니다.
0
69
2
모의고사 1회 3번문제
0
90
3
41강 30:10
0
68
2
이론 공부법 질문 있습니다.
0
90
2
부모의 생성자 관련 질문
0
67
2
시험지 문제에 필기해도 되나요?
0
90
3
41강 11:23
0
60
2
4강파이썬 질문입니다
0
54
2
try-catch 핸들러명
0
66
2
36강 3:48
0
65
2
35강 18:27
0
66
2
자식 코드 내 super() 생략
0
60
2
출력질문
0
76
2





