조건문에 아래의 문장들이 걸려 있으면 거짓으로 간주한다.
숫자형 : 0은 거짓, 그외의 숫자는 참
문자열 : 빈문자열
리스트, 딕셔너리, 튜플, 셋(Set): 값이 비어있는 경우 [], {}, (), set()
None
False
아래 그림은 코딩온 수업자료 "08파이썬기초조건문과 반복문"에 제시된 예제이다.
age = int(input("나이를 숫자로 입력해주세요: "))
pur = input("결제 방법을 입력해주세요(현금 또는 카드): ")
if age > 0: #나이가 양수인 경우
if age < 8:
print(f"{age}세의 {pur} 요금은 무료입니다.")
if age < 14:
if pur == "카드":
print(f"{age}세의 {pur} 요금은 450원입니다.")
elif pur == "현금":
print(f"{age}세의 {pur} 요금은 450원입니다.")
else:
print("결제 방법을 카드와 현금 중 하나만 선택해 입력해주세요.")
elif age < 20:
if pur == "카드":
print(f"{age}세의 {pur} 요금은 720원입니다.")
elif pur == "현금":
print(f"{age}세의 {pur} 요금은 1000원입니다.")
else:
print("결제 방법을 카드와 현금 중 하나만 선택해 입력해주세요.")
elif age < 75:
if pur == "카드":
print(f"{age}세의 {pur} 요금은 1200원입니다.")
elif pur == "현금":
print(f"{age}세의 {pur} 요금은 1300원입니다.")
else:
print("결제 방법을 카드와 현금 중 하나만 선택해 입력해주세요.")
else:
print(f"{age}세의 {pur} 요금은 무료입니다.")
else: #나이가 음수로 입력된 경우 걸러내기
Print("나이는 양수로 입력해주세요.")
간단한 조건을 처리할 때 if-else 조건문을 한 줄로 줄여쓰기도 한다.
형식: 참일 때 값 if 조건 else 거짓일 때 값
ex)
age = int(input("나이를 입력하세요: "))
message = "성인입니다." if age > 19 else "미성년자입니다"
print(message)
조건식이 참이면 문장을 끝까지 실행한 후 다시 조건문으로 돌아와 반복한다. 조건식이 거짓이 되면 반복을 종료한다.
(조건식에 True를 넣어 무한 반복을 설정할 때 용이하다. 단, 종료 조건을 반드시 포함시키도록 한다.)
다음은 코딩온 수업자료에 실린 예제입니다.
사용자에게 숫자를 입력받아, 그 숫자가 양수일 경우 1부터 해당 숫자까지의 합을 계산하고 출력하는 프로그램을 작성하세요.
<조건>
1. 양수만 입력 가능. 음수나 숫자가 아닌 값이 입력되면 “양수만 입력 하세요.” 라는 메시지를 출력하고 다시 입력을 받습니다.
2. 0이 입력되면 그 값은 건너뛰고, 다시 입력을 받습니다.
3. "종료"라고 입력하면 프로그램이 종료됩니다.
4. 양수가 입력된 경우, 1부터 해당 숫자까지의 합을 계산하여 "1부터 n까지의 합은 X입니다." 형식으로 출력합니다.
# 실습 . while문 사용하기
while True:
num = input("양수를 입력하세요('종료' 입력 시 프로그램 종료): ")
if num.isalpha():
if num == "종료":
print("프로그램을 종료합니다.")
break
else:
print("양수만 입력하세요.")
elif int(num) > 0:
i = 0
total = 0
while i <= int(num):
total += i
i += 1
print(f"1부터 n까지의 합은 {total}입니다.")
elif int(num) == 0:
continue # 아래의 문장 실행하지 않고 다시 조건식으로 돌아간다.
else:
print("양수만 입력하세요.")
for문은 주어진 시퀀스의 요소를 순회하며 반복실행
(시퀀스 : 문자열, 리스트, 튜플, range() 등)
+) 마땅한 게 없으면 없으면 i나 _로 대체하기도
[표현식 for 요소 in 시퀀스 (if 조건)]:
-여기서 if 조건은 필터링을 위해 사용되며, 조건이 True인 요소만 리스트에 추가한다. if 조건은 생략이 가능하다.
-여기서 표현식이란 각 요소에 대해 계산 되어 리스트에 추가될 값을 말한다.
-[]가 쓰였으므로, 위 문장의 결과로 리스트를 생성한다.
-for key in my_dict:와 for key in my_dict.keys():는 같은 결과를 출력한다.
-for key, value in my_dict.items():와 같이 딕셔너리의 두개의 요소를 for문을 위한 요소로 잡아 표현식을 나타낼 수 있다.
ex)
for key, value in my_dict.items():
print(f"{key}: {value}")
-중첩 반복문 (외부/ 내부 반복문) 구성 가능
-일반적으로 반복문 안에 반복문이 들어가는 형태는 별로 계산 효율적으로 좋지는 않다.
(특히 외부/ 내부 반복문이 둘다 무한 반복문일 때는 더더욱!)
계산량을 잘 고려하여 최소한으로만 코드 내에 구성하도록 하자.
다음은 코딩온 수업 자료에 적힌 실습 과제의 내용이다.
<과제 문항 설명>
<내가 짠 코드>
#과제. 자판기 프로그램
vending_machine = ['게토레이', '게토레이', '레쓰비', '레쓰비','생수', '생수', '생수', '이프로']
while True: #무한 반복
print("남은 음료수: ", vending_machine)
#print("사용자 종류를 입력하세요(소비자일 경우 \'소비자\', 또는 숫자 1을, 주인일 경우 \'주인\' 또는 숫자 2를 입력해주세요): \n 1. 소비자 \n 2.주인 \n ")
inning = input("사용자 종류를 입력하세요(소비자일 경우 \'소비자\', 또는 숫자 1을, 주인일 경우 \'주인\' 또는 숫자 2를 입력해주세요): \n 1. 소비자 \n 2.주인 \n 3. 종료 ")
if inning == "1" or inning == "소비자":
pur = input("마시고 싶은 음료수를 입력하세요: ")
if pur in vending_machine:
print(f"{pur} 드릴게요.")
vending_machine.remove(pur)
else:
print(f"{pur}은(는) 지금 없네요.")
elif inning == "2" or inning == "주인":
inning2 = input("원하시는 기능을 선택해주세요. (추가를 원하실 경우 \'추가\' 또는 숫자 0을, 삭제를 원하실 경우 \'삭제\' 또는 숫자 1을 입력해주세요): \n 1. 추가 \n 2. 삭제 \n")
if inning2 == "1" or inning2 == "추가":
print("자판기 안의 음료수는 다음과 같습니다.: ", vending_machine)
plus = input("추가할 음료수를 입력해주세요.: ")
vending_machine.append(plus)
vending_machine.sort()
print("자판기 안의 음료수는 다음과 같습니다.: ", vending_machine)
elif inning2 == "2" or inning2 == "삭제":
print("자판기 안의 음료수는 다음과 같습니다.: ", vending_machine)
minus = input("삭제할 음료수를 입력해주세요: ")
if minus in vending_machine:
vending_machine.remove(minus)
print("자판기 안의 음료수는 다음과 같습니다.: ", vending_machine)
else:
print(f"자판기 안에 {minus}가(이) 없습니다. \n자판기 안의 음료수는 다음과 같습니다.: ", vending_machine)
else:
print("잘못된 입력입니다. (추가를 원하실 경우 \'추가\' 또는 숫자 1을, 삭제를 원하실 경우 \'삭제\' 또는 숫자 2를 입력해주세요): ")
elif inning == '3' or inning == '종료':
print("자판기 프로그램을 종료합니다.")
break
else:
print("잘못된 입력입니다. 소비자일 경우 '소비자', 또는 숫자 1을, 주인일 경우 '주인' 또는 숫자 2를 입력해주세요): ")