본문 바로가기
python& Django

파이썬 : If 조건문

if 조건문 들여쓰기

 

파이썬에서 if 조건문을 정의할 때의 형식은 아래와 같다.

if condition:
  #todo
elif condition:
  #todo
else:
  #todo

여기서 중요한 것은 들여쓰기이다. 들여쓰기를 올바르게 하지 않으면 실행 오류가 발생한다.

아마 인터프리터 언어라서 그런 것 같다.

 

다음은 IF 조건문 코딩도장 연습문제이다.

-과목 4개의 점수를 사용자 입력 값으로 받는다.

-점수는 정수형이다.

-점수는 0에서 100까지 입력이 가능하며, 범위를 벗어나면 "잘못된 입력" 이라는 메시지를 출력한다.

-올바른 입력 후 4과목의 평균점수가 80점 이상이면 "합격", 그렇지 않다면 "불합격"을 출력한다.

-올바른 입력이 이루어지지 않았을 경우, 합격/불합격 여부는 출력하지 않는다.

-코드는 8줄 이내로 작성한다.

score = list(map(int, input().split()))
if 0 <= score[0] <= 100 and 0 <= score[1] <= 100 and 0 <= score[2] <= 100 and 0 <= score[3] <= 100:
  if sum(score)/len(score) >= 80:
      print("합격")
  else:
      print("불합격")
else:
  print("잘못된 점수")

약간 까다로웠던 점은 8줄 이내로 작성해야 한다는 것인데 (실제 그런 제약이 있는지는 모르겠지만.. 답 입력 줄이 8줄이다)

가독성이 좀 떨어지는 것 같아 조건문을 줄바꿈해서 실행을 시켜보니, 실행 오류가 발생했다.

이것 역시 인터프리터 언어라서 그런 것인가 아니면 vscode 의 문제인가 했지만.. 일단 문제를 풀기로 했다.

가독성을 위해서, 각 조건에 괄호 () 를 사용할 수도 있다. 

코드를 더 줄이기 위해서는 3항 연산식을 사용하면 되는데, 그렇게 하면 합격/불합격 여부의 코드를 확 줄일 수 있다.

score = list(map(int, input().split()))
if (0 <= score[0] <= 100) and (0 <= score[1] <= 100) and (0 <= score[2] <= 100) and (0 <= score[3] <= 100):
  print("합격") if sum(score)/len(score) >= 80 else print("불합격")
else:
  print("잘못된 점수")

 

개인적으로 3항 연산식보단 if else 구문이 가독성에 더 좋다고 생각한다.

 

어쨌든 Java 나 JavaScript 에서 3항 연산식은 

x = condition ? true : false;

이런 식으로 표현을 하지만, 파이썬에서는 해당 형식을 지원하지 않는다고 한다.

그래서, 

#todo if condition else #todo 

의 형태가 된다.

 

python 3항 연산식 수정

#true value if condition else #false value

문법은 맞다. 하지만,  else 뒤의 구문에 break 나 어떤 변수에 값을 할당 하는 등의 처리른 오류를 발생시킨다.

앞의 #true value 이 부분에는 변수에 값을 할당하는 것이 가능하다.

 

'python& Django' 카테고리의 다른 글

파이썬 : file input output  (0) 2020.10.15
파이썬 : 람다 (lambda)  (0) 2020.10.15
파이썬 : 자료형 (dictionary) -작성 중  (0) 2020.10.08
파이썬 : 자료형 튜플(tuple)  (0) 2020.10.08
파이썬 : 자료형 (List)  (0) 2020.10.08