3.파이썬 활용
가.반복문
1)for문
가)list, tuple, set 자료형의 요소들로 반복문 사용
number = [1,2,3,4]
for number in numbers:
print(number)
>>>
1
2
3
4
나)enumerate()를 사용해 반복되는 요소가 몇번째인지 확인
members=['a','b','c']
for i, member in enumerate(members):
print(f"{member}는 {i}번째 회원입니다.")
>>>
#하면 a은 1번째회원입니다. b는 2번째 회원입니다. 로 나옴.
for i, 변수명 in enumerate(list명) 하면 변수명이 몇번째인지 출력 가능
다)dictionary 자료형의 key, value 반복문 사용 가능
products = {
"bread": 1000,
"milk": 3000,
"egg": 6000,
"drink": 1500
}
for k in products: # key만 사용할 때
print(k)
for v in products.values(): # value만 사용할 때
print(v)
for k, v in products.items(): # key, value 모두 사용할 때
print(k, v)
# result print
"""
bread
milk
egg
drink
1000
3000
6000
1500
bread 1000
milk 3000
egg 6000
drink 1500
"""
-key만 사용할때는 그냥 for 변수 in 딕셔너리명:
-value만 사용할때는 for 변수 in 딕셔너리명.values():
-key, value 둘다 사용할때는 for 변수1, 변수2 in 딕셔너리명.items():
라)range()함수를 활용해서 원하는 만큼의 반복문 사용 가능
for i in range(5)
print(i) > 0,1,2,3,4
마)continue를 활용해 특정 상황에서 아무 동작하지 않고 넘기기 가능
numbers = [24, 75, 12, 54, 30, 70, 99]
for number in numbers:
if number <= 50: # number가 50보다 작거나 같은 경우
continue # 아무런 동작도 하지 않고 다음으로 넘어감
print(f"{number}는 50보다 큰 숫자입니다!")
# result print
"""
75는 50보다 큰 숫자입니다!
54는 50보다 큰 숫자입니다!
70는 50보다 큰 숫자입니다!
99는 50보다 큰 숫자입니다!
"""
바)break 활용해 특정상황에서 반복문 중지 가능
numbers = [1,2,3,4,5,6,7,8]
for number in numbers:
if number >= 4 : number가 4보다 크거나 같은 경우
break #반복문 중지
print(number)>>>
1
2
3
2)while문
가)사용방법은 for문과 크게 다르지 않지만, 조건 다루는 방식에 차이가 있음.
-while문은 조건이 참일 경우 계속해서 실행됨.(무한루프 주의)
나)while문은 반복할 횟수가 정해져 있지 않을 때 사용.
while True:
user_input = input('번호를 입력하세요. 종료 : 0')
if user_input == "0":
break
print(f'{user_input}번을 입력하셨하셨습니다!')
나.자주사용되는 모듈 및 패턴
1)type() / 값의 자료형 확인
- print(type())하면 안의 값에 따른 타입이 결과로 나옴.
2)split() / string을 list로 변환
- string.split("구분자")
- string = "hello/python/world!"
strung_list = string.split("/")
print(string_list) > ['hello','python','world!']
3)join()/ list를 string으로 변환
- '사이에 들어갈 문자'.join(리스트)로 구성
- string_list = ["hello", "python", "world"]
string = "!!".join(string_list)
print(string) > hello!!python!!world
4)replace() / 문자 바꾸기
- '변경할 문자'.replpace('변경 전 문자','변경 후 문자')
before_string = "hello world!!!"
after_string = before_string.replace('!','~')
print(after_string) > hello world ~
5)pprint() / 코드 예쁘게 출력
- from pprint import pprint
6)random / 랜덤한 로직이 필요할 때
- 난수 생성, 임의의 번호 생성 등 랜덤한 동작 필요시 사용
- import random
- numbers = [1,2,3,4,5,6,7,8]
random.shuffle(numbers) #number를 무작위로 섞기
print(numbers) # [랜덤으로 나옴]
- random_number = random.randint(1, 10) #1 ~ 10 무작위 번호 생성
print(random_number) > 1~10사이 아무숫자나 나옴.
7)time / 시간 다루기
- 함수의 실행시간을 측정하는 등 시간 다룰 때 사용
- import time
strat_time = time.time() #현재 시간 저장
time.sleep(1) #1초간 대기
end_time = time.time()
+)작동시간 구하기는 종료시간 - 시작시간 (단위 : 초)
print(f"코드실행시간:{end_time-start_time:.5f}") > 1.00100
++)여기서 .5f는 소수점 5째 자릴 숫자까지 출력
8)detetime/ 날짜 다루기
- from datetime import datetime, timedelta
#현재 날짜 및 시간 출력
print(datetime.now()) #2022-09-17 15:09:20/29932
#datetime의 format code, 더 자세한 것
-%y : 두 자리 연도 / 20, 21, 22
-%Y : 네 자리 연도 / 2020, 2021, 2022
-%m : 두 자리 월 / 01, 02 ... 11 ,12
-%d : 두 자리 일 / 01, 02 ... 30, 31
-%I : 12시간제 시간 / 01, 02 ... 12
-%H : 24시간제의 시간 / 00, 01 ... 23
-%M : 두 자리 분 / 00, 01 ... 58, 59
-%S : 두 자리 초 / 00, 01 ... 58, 59
- string을 datetime 날짜로 변경하기
stringdatetime = "22/12/25 13:20"
datetime = datetime.strptime(stringdatetime, "%y/%m/%d %H:%M" )
print(datetime) > 22/09/17 15:14
- datetime 날짜를 string으로 변환하기
now = datetime.now()
string_datetime = datetime.strftime(now, "%y/%m/%d %H:%M:%S")
print(string_datetime) > 22/09/04 04:04
- 3일전 날짜 구하기
three_days_ago = datetime.now() - timedelta(days=3)
print(three_days_ago) > 2022-09-01 04:07:48.526502
다.지금까지 배운 문법들을 활용해 로또번호 뽑는 코드 작성
import random
count =int(input())
lotto = set() # lotto 변수를 set 자료형으로 선언
def get_lotto_number(count):
result = []
if count < 1:
print("1 이상의 값을 입력해주세요")
for _ in range(count): # count만큼 반복해서 실행
lotto = set()
while len(lotto) < 8: # lotto의 요소 갯수가 8 이하일 경우 계속해서 반복
lotto.add(random.randint(1, 45)) # lotto에 1~45 사이의 랜덤 값을 입력
result.append(lotto)
return result
lotto_numbers = get_lotto_number(count)
print(lotto_numbers)