조건문

조건문에서의 거짓

조건문에 아래의 문장들이 걸려 있으면 거짓으로 간주한다.

숫자형 : 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)

반복문

while 문

조건식이 참이면 문장을 끝까지 실행한 후 다시 조건문으로 돌아와 반복한다. 조건식이 거짓이 되면 반복을 종료한다.
(조건식에 True를 넣어 무한 반복을 설정할 때 용이하다. 단, 종료 조건을 반드시 포함시키도록 한다.)

while문 실습

다음은 코딩온 수업자료에 실린 예제입니다.

사용자에게 숫자를 입력받아, 그 숫자가 양수일 경우 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 문

for문은 주어진 시퀀스의 요소를 순회하며 반복실행
(시퀀스 : 문자열, 리스트, 튜플, range() 등)
+) 마땅한 게 없으면 없으면 i나 _로 대체하기도

리스트 내포

[표현식 for 요소 in 시퀀스 (if 조건)]:
-여기서 if 조건은 필터링을 위해 사용되며, 조건이 True인 요소만 리스트에 추가한다. if 조건은 생략이 가능하다.
-여기서 표현식이란 각 요소에 대해 계산 되어 리스트에 추가될 값을 말한다.
-[]가 쓰였으므로, 위 문장의 결과로 리스트를 생성한다.

for문과 딕셔너리

-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}")

이중 for문

-중첩 반복문 (외부/ 내부 반복문) 구성 가능
-일반적으로 반복문 안에 반복문이 들어가는 형태는 별로 계산 효율적으로 좋지는 않다.
(특히 외부/ 내부 반복문이 둘다 무한 반복문일 때는 더더욱!)
계산량을 잘 고려하여 최소한으로만 코드 내에 구성하도록 하자.

실습 과제. 자판기 프로그램

다음은 코딩온 수업 자료에 적힌 실습 과제의 내용이다.

<과제 문항 설명>

<내가 짠 코드>

#과제. 자판기 프로그램

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를 입력해주세요): ")

0개의 댓글