삼항표현식 syntax error
조회수 298회
현재 삼항표현식에 대해 공부중입니다.
year=2000
val = '윤년입니다 ' if ((year%40) == 0) and ((year%100)!=0) or ((year%400)==0)
print(val)
이렇게 코드를 치면
SyntaxError: invalid syntax
오류가 뜹니다.
혹시나 삼항표현식 문법이 틀렸나 싶어
#삼항표현식 문법
true_value if condition else false_value
이 문법에 맞춰서 새로 적어봤습니다.
#문법의 형태와 같게 적음
year=2000
val = '윤년입니다 ' if ((year%40) == 0) and ((year%100)!=0) or ((year%400)==0) else pass
print(val)
그래도 똑같이 에러가 뜹니다.
SyntaxError: invalid syntax
혹시 조건문 안에 있는 and와 or이 문제인가 싶어 다 지워봤습니다.
#and , or 다 지움
year=2000
val = '윤년입니다 ' if ((year%40) == 0) else pass
print(val)
그래도 똑같이 에러가 뜹니다.
SyntaxError: invalid syntax
왜 삼항표현식 적용이 안되는건지 모르겠습니다.
여기서 삼항표현식을 어떻게 적용하는지 알려주시면 감사하겠습니다!
2 답변
-
개인적으로 이런 코드는 직관적이지 못해서 좋아하지 않습니다.
보기 쉽게 표현하면 a = 1 b = '1' if a > 0: b = '2' else: b = '3' => 이런 식으로 바꿔야 합니다. a = 1 b = '1' if a > 0 else '3'
에러가 나는 이유 질문자분이 작성한 코드는 다음과 같이 표현됩니다. a = 1 if a > 2: b = '2' else: pass print(b) # b값이 정해지지 않았기 때문에 에러
번외 현재 작성한 코드는 이런 식으로 구성할 때 유효한 구성으로 보입니다. import datetime try: datetime.datetime(2021, 2, 29) print('2021년은 윤년') except: pass
-
초보님 설명에서 에러가 발생하는 이유에 대해 조금 더 직관적으로 부가 설명 드리자면
year=2000 val = '윤년입니다 ' if ((year%40) == 0) else pass print(val)
코드에서 else 일때
val = pass
가 됩니다.
val
에 정상적인 값이 들어가지 못하는것이 오류가 발생하는 이유입니다.
댓글 입력