22.9.22 자기주도학습

전재원·2022년 9월 22일
0
post-custom-banner

1. 조건문, 반복문 복습하기

지난 수업 시간에서 응용 1, 2를 정확하게 따라하지 못했던 조건문, 반복문을 복습하기로 했다.

조건문 (if)

Q 숫자를 입력받아 음수와 양수 여부를 출력

x = int(input("숫자를 입력하세요: "))
if x > 0 :
    print("양수")
elif x == 0 :
    print("영")
else :
    print("음수")

<결과값>
숫자를 입력하세요: -2
음수

반복문 (for)

  • 문자열 -> 리스트
  • 리스트를 순회하며 요소 하나씩 꺼내기 가능

Q "월화수목금토일"을 리스트 형태로 변경합니다.

weekday = []
for 요일 in "월화수목금토일" :
    weekday.append(요일)
    print (요일)

print("for문 종료")
weekday

<결과값>








for문 종료
['월', '화', '수', '목', '금', '토', '일']


Q 리스트 안에 있는 값을 순회하며 반복문으로 출력해 보세요.

weekday = ['월', '화', '수', '목', '금', '토', '일']

for 요일 in weekday:
    print(요일)

<결과값>






range() 함수

  • 0 ~ n-1까지의 범위
  • Range(10, 0, -1)과 같은 방식으로 역순 범위 지정도 가능
  • Enumerate() : 인덱스 번호와 값을 같이 가져옴(변수 두 개 지정) = range(len())과 같은 기능
  • 숫자들의 시퀀스로 반복하고자 할 때 사용
for i in range(len(weekday)):
    print(i, weekday[i])

<결과값>
0 월
1 화
2 수
3 목
4 금
5 토
6 일

  • enumerate 를 사용하면 인덱스 번호와 값을 함께 가져올 수 있다
for i, w in enumerate(weekday):
    print(i, w)

<결과값>
0 월
1 화
2 수
3 목
4 금
5 토
6 일

조건문과 반복문 함께 사용하기

Q range로 값을 순회하며 짝수일 때는 "짝수"를 홀수일 때는 "홀수"를 출력하게 해보자

for i in range(1,11):
    if i % 2==0:
        print(i, "짝수")
    else:
        print(i, "홀수")

<결과값>
1 홀수
2 짝수
3 홀수
4 짝수
5 홀수
6 짝수
7 홀수
8 짝수
9 홀수
10 짝수

while문

  • 일정 조건이 충족될 때까지 반복하고 싶을 때 사용
  • 웹 스크래핑 시 데이터가 없을 때 빠져나오기
i = 0
while True:
    i += 1
    print(i)
    if i > 5:
        break

<결과값>
1
2
3
4
5
6

응용 1번 문제

age_code = """
10대 : AGE_001
20대 : AGE_002
30대 : AGE_003
40대 : AGE_004
50대 : AGE_005
60대 : AGE_006
70대 : AGE_007
기타 : AGE_008
( 비회원, 외국인, 그 이상 등 )"""
age_code

<결과값>
\n10대 : AGE_001\n20대 : AGE_002\n30대 : AGE_003\n40대 : AGE_004\n50대 : AGE_005\n60대 : AGE_006\n70대 : AGE_007\n기타 : AGE_008\n( 비회원, 외국인, 그 이상 등 )

for age in age_code.split("\n"):
    age_split = age.split(":")
    print(age_split)

위 age_code에서 '\n' 기준으로 나눠준(.split) 값을 age에 할당시키고
그것을 다시 ':' 기준으로 나눠 age_split 이라는 변수에 저장해준다

age_dict = dict()
for age in age_code.split("\n"):
    age_split = age.split(":")
    if len(age_split) > 1:
        key = age_split[1].strip()
        val = age_split[0].strip()
        age_dict[key] = val

age_dict

<결과값>
{'AGE_001': '10대',
'AGE_002': '20대',
'AGE_003': '30대',
'AGE_004': '40대',
'AGE_005': '50대',
'AGE_006': '60대',
'AGE_007': '70대',
'AGE_008': '기타'}

변수의 길이가 1이 넘을 경우 두 번째 값([1])을 key 값으로,
첫 번째 값([0])을 val로 넣어준다
그리고 딕셔너리 age_dict에 각 key와 valure 값으로 저장해준다

응용 2번 문제

Q 딕셔너리의 결과가 아래와 같이 나오도록 아래의 문자열을 변경해 보세요.

{'경기': '031',
'강원': '033',
'충남': '041',
'충북': '043',
'경북': '054',
'경남': '055',
'전남': '061',
'전북': '063'}
# 아래의 문자를 딕셔너리 형태로 변경하기
phone = ">경기 031 >강원 033 >충남 041 >충북 043 >경북 054 >경남 055 >전남 061 >전북 063"
# ">" 문자를 기준으로 문자열을 나눕니다. => split() 으로 리스트로 변환
# for문으로 리스트를 반복해서 phone_dict 에 채웁니다.
phone_dict = dict()
for ps_split in phone.split(">"):
    if len(ps_split) > 0:
        key = ps_split[:2].strip()
        val = ps_split[-4:].strip()
        phone_dict[key] = val

phone_dict

<결과값>
{'경기': '031',
'강원': '033',
'충남': '041',
'충북': '043',
'경북': '054',
'경남': '055',
'전남': '061',
'전북': '063'}

** 또 다른 방법 (한줄로 표현하기)

{ ps.split()[0] : ps.split()[1] for ps in phone.split(">")[1:]}

<결과값>
{'경기': '031',
'강원': '033',
'충남': '041',
'충북': '043',
'경북': '054',
'경남': '055',
'전남': '061',
'전북': '063'}

profile
농구를 좋아하는 데이터 분석가 지망생
post-custom-banner

0개의 댓글