조건문
age = 19
# 삼항 연산자 : 참일 때의 값 / i / 조건식 / else / 거짓일 때의 값
is_adult = '성인입니다.' if age > 20 else '미성년자입니다.'
print(is_adult)
my_list = ['i','like','to','study','python']
new_list = []
i = len(my_list)
if i == 5:
new_list.append(my_list[::2]) # 1. [['i','to','python']]
# new_list.append(my_list[0:2]) # 6. [['i', 'like']]
# new_list.extend(my_list[::2]) # 3. ['i','to','python']
print(new_list)
# 숫자를 입력했을때 짝수와 홀수를 구분하는 if문
number = input("정수 입력 > ")
last_character = number[-1]
if last_character in "02468":
print("짝수입니다")
if last_character in "13579":
print("홀수입니다.")
태어난 연도를 입력받아 생애주기 받기 2023년 6월 28일 부터 만나이로 변경이 되면서 나이에 혼선이 생기고 있는 가운데 정부 연령기준에 맞춰 자신이 어떤 나이대 인지 찾아보자. (https://www.gosims.go.kr/hh/hh001/retrieveLfcySearch.do)
정부기준으로 영유아는 0-5 / 아동은 6-12 / 청소년 13-18 / 청년 19-29 / 중년 30-49 / 장년 50-64 / 노년 65세 이상 / 연령대 무관으로 나눈다. 태어난 연도를 입력 받아서 만나이 적용 날짜를 산출한다. if문을 통해 어떤 종류의 생애주기 인지를 출력한다.
import datetime
from datetime import timedelta, timezone
year = int(input("태어난 연도를 입력하세요"))
month = int(input("태어난 월을 입력하세요"))
day = int(input("태어난 일을 입력하세요"))
birthday = datetime.date(year, month, day)
# 만나이 적용일자
d_day = datetime.date(2023, 6, 28)
# 만나이 계산
age = d_day.year - birthday.year - ((d_day.month, d_day.day) < (birthday.month, birthday.day))
# 결과 출력
print('2023년 6월 28일 기준 만 나이는')
if age >= 0 and age <= 5:
print(f"{age}살 이므로 영유아 입니다.")
elif age >= 6 and age <= 12:
print(f"{age}살 이므로 아동 입니다.")
elif age >= 13 and age <= 18:
print(f"{age}살 이므로 청소년 입니다.")
elif age >= 19 and age <= 29:
print(f"{age}살 이므로 청년 입니다.")
elif age >= 30 and age <= 49:
print(f"{age}살 이므로 중년 입니다.")
elif age >= 50 and age <= 64:
print(f"{age}살 이므로 장년 입니다.")
elif age >= 65:
print(f"{age}살 이므로 노년 입니다.")
else:
print(f"연령대가 제대로 입력이 되지 않아 연령대 무관으로 분류됩니다.")
반복문
[사용 상황]
- 월별/분기별/연도별 산출할 게 있을 경우
- 컬럼별 데이터 검사 및 특이값 이상치 발견
- Rule Base 최적 상품 추천
- ML/DL모델을 파라미터를 바꿔서 반복 시행할때
- 기타 3번 이상 반복 작업 해야하는 반복되는 일들
-> 업무의 최소화, 빠른 퇴근, 나의 체력 안배
for
d = {"key1" : 1000 , "key2" : 2000, "key3" : 3000}
for i in d.keys(): # for i in d:
print(i) # key 값
for i in d.values():
print(i) # value 값
for i in d.items():
print(i) # 모든 값
for - else
for x in [1, 2, 3, 4]:
if x % 3 != 0:
print(x) # x가 3의 배수가 아니면 출력
else:
break # x가 3의 배수이면 반복문에서 빠져나감
else:
print("리스트의 원소를 모두 출력했어요")
# 1
# 2
for x in [1, 2, 3, 4]:
if x % 5 != 0:
print(x) # x가 5의 배수가 아니면 출력
else:
break # x가 5의 배수이면 반복문에서 빠져나감
else:
print("리스트의 원소를 모두 출력했어요")
# 1
# 2
# 3
# 4
# 리스트의 원소를 모두 출력했어요
break / continue
for i in range(10):
if i == 3:
break
if i == 1:
continue
print(i) # 반복문 밖에 있음
# 3
for i in range(10):
if i == 3:
break
if i == 1:
continue
print(i) # 반복문 안에 있음
# 0 2
지능형 리스트 (리스트 컴프리헨션)
for i in range(2, 10):
for j in range(1,10):
print(f'{i} x {j} = {i*j}')
y = [f'{i} x {j} = {i*j}' for i in range(2,10) for j in range(1,10)]
print(y)
def example(i):
if i % 100 == 0:
return i
else:
return 0
old_list = [100,200,300,101,202,303]
new_list = [example(i) for i in old_list]
# new_list = [i if i % 100 == 0 else 0 for i in old_list] # 삼항 연산자
print(new_list)
# [100, 200, 300, 0, 0, 0]
enumerate
skill = [
('고기잡이', 100, 300),
('고기팔기', 120, 400),
('낚시', 5, 500),
('통발', 5, 600),
('큰그물', 5, 700)
]
for i,j,z in skill:
print(i,j,z)
# 고기잡이 100 300
# 고기팔기 120 400
# 낚시 5 500
# 통발 5 600
# 큰그물 5 700
for i, (skillName, skillLevel, skillGrade) in enumerate(skill):
print(i, skillName, skillLevel, skillGrade)
# 0 고기잡이 100 300
# 1 고기팔기 120 400
# 2 낚시 5 500
# 3 통발 5 600
# 4 큰그물 5 700
for i, j in enumerate(skill, 100):
print(i, j)
# 100 ('고기잡이', 100, 300)
# 101 ('고기팔기', 120, 400)
# 102 ('낚시', 5, 500)
# 103 ('통발', 5, 600)
# 104 ('큰그물', 5, 700)
while
while - else
countdown = 5
while countdown > 0:
print(countdown)
countdown -= 1
if input() == '중단': # while 문이 break될 경우 else 블록이 실행되지 않음
break
else:
print('발사!')
# 5
# 4
# 3
# 중단
시간 = 0
현재시간 = int(input("시를 입력해주세요"))
종료시간 = 18
if 현재시간 > 종료시간:
print('수업이 끝났기 때문에 Q&A시간을 가지겠습니다.')
else:
while True:
시간 += 1
현재시간 += 1
print(f'{시간}시간이 지나 {현재시간}시가 되었습니다.')
if 현재시간 == 종료시간:
print('수업 종료시간이 되었기 때문에 Q&A시간을 가지겠습니다.')
break
# 시를 입력해주세요 15
# 1시간이 지나 16시가 되었습니다.
# 2시간이 지나 17시가 되었습니다.
# 3시간이 지나 18시가 되었습니다.
# 수업 종료시간이 되었기 때문에 Q&A시간을 가지겠습니다.
continue / pass
- continue의 사전적 의미를 살펴보면 '계속하다'라는 뜻이 있습니다. 파이썬에서 continue문은 반복문이 실행하는 코드 블록의 나머지 부분을 실행하지 않고 다음 반복으로 건너가게 흐름을 조정합니다.
- pass의 사전적 의미는 '지나치다'라는 뜻이며, 파이썬에서 pass문은 단순히 실행할 코드가 없다는 것을 의미하며 아무런 동작을 하지 않고 다음 코드를 실행합니다.
count_amount= [
(3, 15000),
(8, 40000),
(0, 0),
(2, 10000)
]
# continue
for count, amount in count_amount:
if count < 1:
continue
print(f'구매개수는 {count}, 구매가격은 {amount}')
# 구매개수는 3, 구매가격은 15000
# 구매개수는 8, 구매가격은 40000
# 구매개수는 2, 구매가격은 10000
# pass
for count, amount in count_amount:
if count < 1:
pass
print(f'구매개수는 {count}, 구매가격은 {amount}')
# 구매개수는 3, 구매가격은 15000
# 구매개수는 8, 구매가격은 40000
# 구매개수는 0, 구매가격은 0
# 구매개수는 2, 구매가격은 10000
- 1개도 구매하지 않았을 경우 if의 조건이 참(True)이 되어 continue문을 실행합니다. 따라서 나머지 코드블록인 구매개수와 가격을 출력해주는 print문을 실행하지않고 다시 for 반복문의 내부 코드블록 시작부분으로 돌아갑니다.
- 여기서 continue라고 되어 있는 부분을 pass로 바꾸면 수험번호 0개의 0원도 출력하는 것을 볼 수 있습니다. 반복 중간에 continue를 만나면 다음 반복으로 넘어가지만 pass를 만나면 그 라인만 지나치고 아래 문장을 그대로 실행합니다.
# 맞을 때까지 반복
import random
i = 0
while i != 3: # 주사위 숫자가 3이 아닐 때 계속 반복
i = random.randint(1, 6) # randint를 사용하여 가상 주사위를 만듬
print(i)
# 특정 데이터 제거
cust_all = [1,2,1,2,3]
print(cust_all)
value = 1
while value in cust_all:
cust_all.remove(value)
print(cust_all)
# [1, 2, 1, 2, 3]
# [2, 2, 3]
# 1~100사이의 숫자를 맞출때까지 반복하는 while문 작성
# 내가 입력한 숫자가 컴퓨터 숫자보다 작으면 "값이 작다"
# 내가 입력한 숫자가 컴퓨터 숫자보다 크면 "값이 크다"
# 답이 맞으면 맞았습니다.
import random
guess_number = random.randint(1,100)
user_input = int(input("숫자를 입력해서 값을 맞춰보세요"))
while (user_input != guess_number):
if user_input > guess_number:
print("숫자가 큽니다.")
else:
print("숫자가 작습니다.")
user_input = int(input("숫자를 입력해서 값을 다시 맞춰보세요"))
else:
print("정답입니다.")'DATA ANALYSIS > TIL' 카테고리의 다른 글
| [VOD] 같이 푸는 PYTHON [기초] (0) | 2023.05.04 |
|---|---|
| [Day7] Python 기초(5) (0) | 2023.05.04 |
| [Day5] Python 기초(3) (0) | 2023.05.02 |
| [Day4] Python 기초(2) (0) | 2023.04.29 |
| [Day3] Python 기초(1) (0) | 2023.04.28 |