삼항표현식 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 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    개인적으로 이런 코드는 직관적이지 못해서 좋아하지 않습니다.

    보기 쉽게 표현하면
    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에 정상적인 값이 들어가지 못하는것이 오류가 발생하는 이유입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)