Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

뒤죽박죽 데이터분석 일기장

[Python] [2일차] 조건문, 반복문 본문

Python

[Python] [2일차] 조건문, 반복문

시우마이 2023. 1. 3. 17:28

이번 포스트는 조건문과 반복문에 대해서 알아보려고 합니다. 

 

조건문


조건문은 특정 조건에 따라서 코드를 실행합니다. 

 

조건문으로 자기가 가진 돈에 따라서 이용해야 하는 대중교통을 출력하는 프로그램을 만들어 보겠습니다. 

 

my_money = int(input("가진 돈을 입력하세요"))

if my_money >= 5000:
    print("택시 타야지~")
elif my_money >= 2000:
    print("버스 탈 수 있다")
else:
    print("걸어가야지..")
    
print('END')

 

 

4000원을 입력했을때 5000원보다 크지 않으므로 택시에는 해당 사항이 없습니다.

 

하지만 2000원보다는 크거나 같으므로 버스는 타고 살 수 있습니다.

 

이렇게 조건문 앞선 조건에 True 인지 False인지 확인하고 True인 경우에는 적혀있는 명령어를 수행합니다. 

 

 

이번에는 입력한 점수에 따라 해당되는 학점을 출력하는 학점 계산기를 프로그래밍 해보겠습니다. 

 

point = int(input("점수를 입력해 주세요. "))

if point >= 90 :
    print("A")
elif point >= 80:
    print("B")
elif point >= 70:
    print("C")
elif point >= 60:
    print("D")
else :
    print(F)

 

 

숫자를 입력받아 홀수, 짝수를 출력하는 코드 

 

# 숫자를 입력받아 홀수, 짝수를 출력하는 코드 
# 조건을 확인하는 코드 부분의 데이터가 bool(True, False)가 아니면, bool() 형변환해서 판단 
number = 8 
if number % 2 != 0: #2로 나눈값이 0이 아닐때 
    print('홀수')
else:
    print('짝수')

 

 

입금과 출금 기능이 있는 ATM을 알고리즘으로 만들어 보겠습니다. 

 

account = 10000
command = int(input("입금하시겠으면 0 또는 출금하시겠으면 1을 눌러주세요."))
money = int(input("입금하시려는 또는 출금하시려는 금액을 입력해 수제요: "))

if command == 0:
    account += money

else:

    if account <= money :
        print(f'{money - account}의 잔액이 부족합니다.')

    else :
        account -= money 
        print(f'{money}의 금액이 출금되었습니다.')

print(f"{account}의 잔액이 남았습니다.")

#알고리즘을 우선 정리하고 코드로 풀면 수월하게 진행할 수 있습니다.

 

삼항연산자 : 간단한 조건문을 한 줄의 코드로 작성하는 방법 

 

<true data> if <condition> else <false data> 

 

balance, draw = 10000, 2000
if balance >= draw:
    print('인출가능')
else:
    print("인출불가")

 

위처럼 간단한 코드를 삼항연산자로 표현해 보겠습니다. 

 

# 삼항연산자 예시
balance, draw = 10000, 2000
# <true data> if <condition> else <false data>
result = "인출가능" if balance >= draw else "인출불가"
result

 

반복문


반복문은 특정 코드를 반복적으로 실행하며 코드 유지 보수에 유리합니다. 

 

ex) while, for, break, continue, range(), enumerate(), zip() 

 

 

while 구문으로 호우 3번 출력하기 

 

count = 3 
while count:
	print('호우') 
    count -= 1

 

 

* 조건을 확인하는 코드에 True, False가 아니면 bool() 형변환 해서 판단

* bool(0) = False 

 

기본적인 for 구문

 

for x in [0,1,2]:
	print('jupyter')

 

 

하지만 언더바를 x 대신 대입해 식별자가 겹치는 경우를 예방할 수 있습니다. 

 

# _ : 식별자로 사용될때 사용되지 않는 식별자로 사용 
for _ in [0,1,2]:
    print('jupyter')

 

 

또한 range() 함수를 사용하면 보다 손쉽게 for 구문을 출력할 수 있고 list도 만들 수 있습니다. 

 

for _ in range(3):
    print('jupyter')

 

 

 

While 구문을 이용해서 일주일을 리스트화 시켜 평일과 주말 구분하기 

더보기

 

week = list('일월화수목금토')
for day in week:
    if (day == '일') or (day == '토'):
        print(day, '주말', '육아')
    else:
        print(day, '주중', '강의, 육아')

 

 

 

30세 이상의 사용자 목록 출력 

더보기
users = ['홍길동(32)', '김파이썬(27)', '정노트북(43)']

#모범답안 
for user in users:
    #print(user, int(user[-3:-1]))
    if int(user[-3:-1]) >= 30:
        print(user)

 

 

이번에는 break() 와 continue() 함수를 정리해 보겠습니다. 

 

위의 함수들은 아래의 코드로 한 번에 정리할 수 있습니다. 

 

for data in range(10):

    if data % 2: 
        continue 

    if data >= 5:
        break 
    
    print(data)

해석해보자면 :

 

for 구문 안에서 데이터의범위 0부터 9까지 안에 있는 조건문을 출력하려고 합니다. 

 

만약 데이터를 2로 나눴을 때 나머지가 0이 아니라면 continue function에 의해서 for 구문으로 다시 올라갑니다. 

 

예를 들어 data가 1이라면 나머지가 0이 아니므로 True이기 때문에 continue 함수에 의해 다시 for 구문으로 올라갑니다. 

 

만약에 data의 숫자가 5를 넘었다면 반복문을 중단합니다. 

 

 

랜덤한 숫자 맞추기 게임 

더보기
# 랜덤한 숫자 먼저 맞추기 게임

# 1. 0 ~ 9의 랜덤한 숫자 생성
import random
random_number = random.randint(0, 9)

# 2. 숫자를 입력한 횟수를 카운팅하는 변수 선언 : count
count = 0

# 3. 아래의 내용 반복 : while True:
while True:

#   3-1. 숫자를 입력 받음 : int(input())
    input_number = int(input('insert number(0~9) : '))

#   3-2. 카운팅 +1 추가 : count +=
    count += 1

#   3-3. 랜덤한 숫자와 입력받은 숫자가 같은지 확인 : if ==
    if random_number == input_number:

#   3-4. 같으면 카운팅 횟수 출력 > 게임 종료 : print() break
        print(f'count : {count}')
        break

위의 코드를 보면 while True라는 반복문을 볼 수 있는데 이것은 break가 나오기 전까지 아래의 내용을 계속 반복한다는 것입니다. 

 

알고리즘을 작성할 때는 먼저 단계별로 알고리즘을 문자로 작성하고 하나하나 읽으면서 코드로 작성하는것이 좋은 방법 중에 하나라고 강사님이 추천해 주셨습니다. 

 

 

이번에는 enumerate() 함수에 대해 복습해 보려고 합니다. 

 

enumerate() : 반복문에서 리스트 데이터에 idx 숫자를 출력할 때 사용

 

enumberate()를 사용하지 않고 출력할 때 

 

users = ['홍길동(32)', '김파이썬(27)', '정노트북(43)']
idx = 0
for user in users:
    print(idx, user)
    idx += 1

 

 

enumerate()를 사용하는 경우

 

users, list(enumerate(users))

 

 

enumerate에서 중요한 특징은 바로 튜플 데이터로 생성된다는 것입니다. 

 

튜플데이터를 가진 리스트로 생성됬을때 우리는 반복문을 가지고 각각의 변수에 햘당할 수 있습니다. 

 

# idx, user = 0, '홍길동(32)'
for idx, user in enumerate(users):
    print(idx, user)

 

이번에는 zip() 함수에 대해서 설명해 보겠습니다. 

 

# zip() : 같은 인덱스의 데이터끼리 튜플로 묶어서 리스트로 출력
players = ['손흥민', '메시', '호날두']
goals = [30, 20, 10]
games = [50, 30, 40, 20]
# print(list(zip(players, goals)))
for data in zip(players, goals, games):
    print(data)

 

zip 함수 같은 경우 같은 수의 인덱스를 가진 데이터끼리 튜플 데이터로 묶어서 리스트로 출력할 수 있습니다. 

 

각 리스트의 개수가 다른 경우에는 가장 작은 숫자의 리스트 개수에 따라 튜플 데이터가 생성됩니다.