본문 바로가기
TIL(Daily)/Python

Wed/07/Sep/22 TIL

by Hawie 2022. 9. 8.

우선 오늘 배운 내용에 대해 리뷰 를 해보자!

첫번째 반복문

while 혹은 for문을 사용해 반복문을 사용할 수 있습니다.

 

for문

list, tuple, set 자료형의 요소들로 반복문을 사용할 수 있습니다.

 

numbers = [1, 2, 3, 4]

for number in numbers:
    print(number)

# result print
"""
1
2
3
4
"""

members = ("lee", "kim", "park")

for member in members:
    print(member)

# result print
"""
lee
kim
park

"""


enumerate()를 사용해 반복되는 요소가 몇번째인지 확인할 수 있습니다.

members = ["lee", "park", "kim"]

for i, member in enumerate(members):
    print(f"{member}는 {i}번째 회원입니다.")

# result print
"""
lee는 0번째 회원입니다.
park는 1번째 회원입니다.
kim는 2번째 회원입니다.
"""


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

 


range() 함수를 활용하면 원하는 만큼 반복문을 사용할 수 있습니다.

# range에 지정한 값만큼 반복되며, i에는 0부터 지정한 값-1까지의 값이 할당됩니다.
for i in range(5):
   print(i)

# result print
"""
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)

# result print
"""
1
2
3
"""

while문(무한 루프에 빠질 수도있음)

 

while

 

사용 방법은 for문과 크게 다르지 않지만, 조건을 다루는 방식에 차이가 있습니다.

 

# while문은 조건이 참일 경우 계속해서 실행됩니다.
# 때문에 아래와 같이 코드를 작성할 경우, 무한 루프(infinity loop)에 빠지게 됩니다.
while True:
    print("hello world")


대부분의 경우 while문은 반복 할 횟수가 정해져 있지 않을 때 사용합니다.

 

while True:
    user_input = input("번호를 입력하세요. 종료 : 0") # 사용자의 input을 받는 함수
    if user_input == "0":
        break

    print(f"{user_input}번을 입력하셨습니다!")

 


자주 사용되는 모듈 및 패턴

 

type() / 값의 자료형 확인해보기

 

integer = 10
float_ = 1.23
string = "hello world!!"
list_ = [1, 2, 3]
tuple_ = (1, 2, 3)
set_ = {1, 2, 3}
dictionary = {"key": "value"}
boolean = True

print(type(integer)) # <class 'int'>
print(type(float_)) # <class 'float'>
print(type(string)) # <class 'str'>
print(type(list_)) # <class 'list'>
print(type(tuple_)) # <class 'tuple'>
print(type(set_)) # <class 'set'>
print(type(dictionary)) # <class 'dict'>
print(type(boolean)) # <class 'bool'>

 


split() / string을 list로 변환하기

 

# split은 string.split("구분자")로 구성되어 있습니다.

string = "hello/python/world!!"
string_list = string.split("/") # split() 안에 들어간 값을 기준으로 문자를 나눈다.

print(string_list) # ['hello', 'python', 'world!!']

 


join() / list를 string으로 변환하기

 

# join은 "사이에 들어갈 문자".join(리스트) 로 구성되어 있습니다.

string_list = ["hello", "python", "world"]
string = "!! ".join(string_list)

print(string) # hello!! python!! world


replace() / 문자 바꾸기 *

 

pprint() / 코드 예쁘게 출력하기

 

# pprint는 pretty print의 약자이며, 데이터를 더 예쁘게 출력해 준다.
from pprint import pprint

sample_data = {
    "id": "0001",
    "type": "donut",
    "name": "Cake",
    "ppu": 0.55,
    "batters":
        {
            "batter":
                [
                    {"id": "1001", "type": "Regular"},
                    {"id": "1002", "type": "Chocolate"},
                    {"id": "1003", "type": "Blueberry"},
                    {"id": "1004", "type": "Devil's Food"}
                ]
        },
    "topping":
        [
            {"id": "5001", "type": "None"},
            {"id": "5002", "type": "Glazed"},
            {"id": "5005", "type": "Sugar"},
            {"id": "5007", "type": "Powdered Sugar"},
            {"id": "5006", "type": "Chocolate with Sprinkles"},
            {"id": "5003", "type": "Chocolate"},
            {"id": "5004", "type": "Maple"}
        ]
}

pprint(sample_data) # print로 출력했을 때와 결과 비교해 보기!!

 


random / 랜덤한 로직이 필요할 때

 

# 난수 생성, 임의의 번호 생성 등 랜덤한 동작이 필요할 때 사용된다.
import random

numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(numbers) # numbers를 무작위하게 섞기
print(numbers) # [2, 8, 6, 4, 3, 7, 1, 5]

random_number = random.randint(1, 10) # 1 ~ 10 사이의 무작위 번호 생성
print(random_number) # 4

 


time / 시간 다루기

 

# 함수의 실행 시간을 측정하는 등 시간을 다룰 때 사용되는 모듈이다.
import time

start_time = time.time() # 현재 시간 저장

time.sleep(1) # 1초간 대기

end_time = time.time()

# 코드가 종료된 시간 - 코드가 시작된 시간으로 실행 시간 구하기 (단위 : 초)
print(f"코드 실행 시간 : {end_time-start_time:.5f}") # 코드 실행 시간 : 1.00100

 


datetime / 날짜 다루기

 

from datetime import datetime, timedelta

# 현재 날짜 및 시간 출력
print(datetime.now()) # 2022-09-04 03:55:32.277095

# 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 날짜로 변경하기
string_datetime = "22/12/25 13:20"
datetime_ = datetime.strptime(string_datetime, "%y/%m/%d %H:%M")
print(datetime_) # 2022-12-25 13:20:00

# 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
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(10)
print(lotto_numbers)

# result print
"""
[
    {1, 3, 4, 6, 9, 44, 18, 22, 26},
    {2, 5, 9, 11, 44, 45, 19, 23, 28},
    {1, 4, 39, 41, 16, 18, 27, 29, 31},
    {2, 5, 8, 9, 14, 20, 22, 24, 31},
    {33, 37, 6, 40, 41, 42, 19, 30, 31},
    {33, 1, 36, 8, 41, 9, 17, 24, 30},
    {5, 39, 41, 10, 12, 16, 23, 25, 26},
    {3, 35, 37, 11, 14, 17, 19, 20, 30},
    {33, 35, 3, 11, 43, 15, 16, 27, 30},
    {33, 36, 38, 6, 43, 24, 25, 30, 31}
]
"""
# 랜덤 값을 사용하기 때문에 코드를 실행할 때마다 결과는 달라집니다.


위 와 같이 오늘 배운 문법 들을 복붙 해봤다.

그냥 복붙만 한건 아니다 다시 한번 읽어 가면서 해보았다.

확실히 다시 한번  보면서 하기 기억도 잘 난다.

 

그래도 그중에서도 어려운 것은 반복문이다  

For 문 은 해도 아직 감이 잘 안잡힌다...

아무래도 이번 추석 연휴에 2 틀정도는 복습 하는 시간으로 사용해서

다음주 심화 과정 시작 전 까지 복습을 해야겠다.

 

그리고 오늘  자주 사용되는 모듈 및 패턴도 공부하게 되었다.

type() / 값의 자료형 확인해보기

split() / string을 list로 변환하기

join() / list를 string으로 변환하기

replace() / 문자 바꾸기 

pprint() / 코드 예쁘게 출력하기

random / 랜덤한 로직이 필요할 때

time / 시간 다루기

datetime / 날짜 다루기

 

위 와 같은 모듈 및 패턴 과 친해진다면 확실히 좋아 보인다.

앞으로 사용 할 날 많이 있어 보이니 사용 할 때 마다 

다시 한번 읽어 보도록 하겠다.

 

'TIL(Daily) > Python' 카테고리의 다른 글

Wed/15/Sep/22 Python 심화  (0) 2022.09.15
Tue/13/Sep/22-python 심화(Clalss,Mutable,Immutable)  (0) 2022.09.13
Tue/06/Sep/22-TLI  (0) 2022.09.06
Mon/05/Sep/22(Python 언어의 이해)  (1) 2022.09.05
클래스  (0) 2022.09.02

댓글