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 |