공부/ABC 부트캠프

ABC 부트캠프 5일차

내가짱이야내가짱이야 2023. 3. 17. 16:27

부-하.

오늘도 새로운 하루가 시작됐습니다.

벌써 5일차입니다.

하루가 빠르게 지나가는 것 같아용

그리고 오늘은 행복한 금요일 ^^!

 

오늘의 간식

 

오늘은 새로운 간식이 들어와서 한번 먹으면서 시작해봅니당

맛있-다

 

아침에 30분정도는 전날 과제로 냈던 코드를 확인해보는 활동을 합니다.

제가쓴 코드와 교수님이 쓴 코드가 비슷하면 행-복

 

파이썬수업 시작~!

 

 

꿀팁.

list comprehension ( 리스트 컴프리헨션)

[(변수를 활용한 값) for (사용할 변수 이름) in (순환할 수 있는 값) if (조건)]

 

smallest = min(temp.values())
day = [k for k, v in temp.items() if v == smallest][0]
print("요일:%s, 최저 기온:%.1f" % (day, smallest))

엄지척.

한줄로 코드를 줄일 수 있어용

코드는 줄이면 줄일수록 좋습니다.

 

 

 

오늘은 드디어 함수 생성을 배워볼것입니다.

 

"""
함수 생성 및 호출
"""

def hello():
    print("안녕하세요")

hello()
hello()
hello()

def로 정의하고 원하는 함수 이름을 지정해서 그안에 

원하는 내용을 집어넣으면 됩니다.^^! 매우 간단.

 

 

 

내장 함수가 많기 때문에 내장함수를 이용하는 것을 추천합니다.

파이썬 간단해서 잘되어있거든용 ㅎㅎ

 

print() 화면에 데이터 값을 출력함
input() 키보드를 통해 데이터를 입력 받음
range() 정수의 범위를 설정함
list() 리스트를 생성함
int() 문자열이나 실수형 숫자를 정수형 숫자로 변환함
float() 문자열이나 정수형 숫자를 실수형 숫자로 변환함
str() 정수형 숫자나 실수형 숫자를 문자열로 변환함
type() 데이터의 형을 구함

 

 

신기하지 않나요? 저희 거의 다써봤어요 str 빼고??!

 

 

함수의 매개변수도 있습니다.

정의할 때 원하는 함수이름 안에 매개변수를 지정해놓는다면

일치하게 넣어야 오류가 나지 않습니다.

"""
함수의 매개변수
"""

def hello():
    print("안녕하세요")

def say_hello(name):
    print("%s님 안녕하세요!" % name)


hello()
say_hello()

 

say_hello 친구를 보면 함수 정의할 때 name이라는 매개변수가 들어가죠?

그러면 불러올 때도 저 매개변수에 맞는 친구가 들어가야

오류가 나지 않는다는 뜻입니다.

 

 

저 코드를 돌려봤자 오류떠서 ㅜ_ㅜ 호다닫 수정해볼게용

 

빵-긋

 

 

함수정의를 와다다다닥 만들어놓고

불러오지 않으면 실행되지 않습니다.

 

 

참고하시길...

 

이건 특별히 알려드리는 겁니다.

파이썬에서만 가능한 대박인 기능이 하나 있는데

동적으로 작동하는 함수를 만들 수 있습니다.

"""
평균을 구하는 함수 -> 매개변수를 가변적으로 사용할 수 있도록 *args
"""

def average(*args):
    num_args = len(args)
    sum = 0
    for i in range(num_args):
        sum = sum + args[i]

    avg = sum/num_args
    print("%d과목 평균 : %.1f" % (num_args, avg))

average(85, 96, 87)
average(77, 93, 85, 97, 72)

 

* 이걸 사용하게되면 주소를 가져올 수 있어용..

주소에게서 정보를 뺏어올 수 있습니다.

주소뺏긴 데이터

 

 

연습문제 입니당

"""
함수에서 매개변수의 수를 가변으로 해주는 *args를 활용하는 프로그램
"""

def member_join(*args):
    result = ""
    for arg in args:
        result = result + arg + " "

    print("가입 회원:", result)

member_join("김정연", "안서영")
member_join("황선형", "김철영", "이창연")
member_join("정수진", "김보람", "정수연", "함소영")

결과값 굿.

 

 

 

 

파이썬에게 지지 않을게요

 

 

12시가 되면 맨날 밥을 먹어서 그런가 

파블로프의 개처럼 12시가 가까워지면 심장이 떨리고

기대가 되네요.

근데 저희 부트캠프 점심시간은 1시입니다.

 

어린왕자보면 4시간전부터 떨린다 그러잖아요..

저는 아침에 올때부터 오늘 점심은 뭘까 기대하는 사람이에요

 

 

 

 

 

 

지역변수와 전역변수에 대해서 학습할 시간입니다.

 

기본 정의를 살펴보면

지역 변수는 정의된 함수 내에서 사용되는 변수를 말합니다.

 

전역 변수는 메인 루틴의 제일 앞에 정의된 변수를 말합니다.

전역 변수는 메인 루틴이나 정의된 함수 내에서 사용 가능합니다.

 

이렇게 이론으로만 배우면 기억이 안납니다.

 

 

def func():
    x = 200     # 지역 변수
    return x

x = 100         # 전역 변수
func()
print(x)

기본 이론 코드입니다

 

만약 대전사는 평범한 뽀삐가 있다고 칩시다.

대전사는 뽀삐

그런데 동명의 유명한 뽀삐가 있다고 치면

둘의 이름은 갖지만 생긴게 다르겠죠?

그런 의미입니다.

 

 

저 뽀삐를 전국에서 가장 유명한 뽀삐로 만들 수 있는 방법이 있습니다.

바로 global 키워드를 사용하는 것인데요.

 

def dj_puppy():
    global puppy    # global 선언 -> 전역 변
    puppy = 100     # 전역 변수
    print(puppy)

puppy = 150         # 전역 변수
dj_puppy()
print(puppy)

대전 뽀삐가 전국에서 가장 유명한 뽀삐가 되었습니다.....

감동적인 스토리네요..

 

 

 

 

 

추가적으로 배울 수 있는 내장 함수들이 있습니다.

매우짧고 간단하니 가볍게 둘러보세요 ^^7

 

ord() 문자의 아스키(ASCII) 코드 값을 구함
bin() 10진 정수를 2진수로 변환함
hex() 10진 정수를 16진수로 변환함
round() 반올림 값을 구함
max() 리스트나 튜플의 최댓값을 구함
min() 리스트나 튜플의 최솟값을 구함

 

다 간단한데 특별히 한번 해봐야하는건 바로 round()입니다.

어떻게 반올림이 되는지 궁금하지 않나요?

 

 

 

 

x = round(7.65676)
print(x)

y = round(7.65676, 2)
print(y)

결과값 깜찍.

 

그냥 round를 사용하게되면 소수점 첫째 짜리 반올림이 되구용

round(값, 소수점 자리) 소수점 자리에 입력한 자리만큼만 남게됩니다.

반올림은 원하는자리 +1에서 하게 되겠죠???

 

꿀팁 도장 쾅.

 

 

 

 

이번에는 모듈에 대해서 배워볼 것입니다.

 

모듈이란?

-하나의 파일을 여러 개로 나누어 관리

-프로그램에서 공통적으로 사용되는 함수들을 모아서 별도의 파일에 저장

-필요한 모듈 파일을 불러와 파일 내에 정의된 함수를 쉽게 이용

 

 

 

 

저희가 볼 모듈은 math모듈, time모듈, datetime모듈, random모듈을 볼 것인데용

다들 자주 사용하는 모듈입니다.

 

 

math모듈은 이름만 들어도 예상이 가시나요?

바로 수학과 관련된 모듈입니다. ~_~

sin, cos, tan 등 로그값과 거듭 제곱도 반환할 수 있습니다 ^^!

 

 

 

"""
math 모듈 사용 예제
"""

import math

# 제곱근 sqrt(x) x의 제곱근을 반환
print("sqrt(25): ", math.sqrt(25))
print(math.pi)

불러올 때는 import를 사용하게 됩니다.

 

import에 대해서 조금 배워볼까용?

 

 가장 기본적으로는 이렇게 사용합니다.

import 모듈명



모듈명.모듈함수명()

 

모듈명이 너무 길다! 힘들다! 할 때 사용하는 방법은 이렇습니다.

import 모듈명 as 별칭



별칭.모듈함수명()
import math as m

print(m.pi)

이렇게 깜찍하게 사용할 수 있습니다.

 

나는 필요한 것만 빼가고 싶다. 내 컴퓨터는 인터넷도 힘들다.

할때 사용하기 좋은 방법은 이렇습니다.

from 모듈명 import 모듈함수명, 모듈함수명, …



모듈함수명()
from math import pi

print(pi)

확실히 코드가 더 줄었죠??

유용하게 사용하시면 좋을 것 같네용

 

 

현재 시간을 알 수 있는 모듈도 있어용 바로 time~!

 

import time

seconds = time.time()
print(seconds)
tm = time.localtime()
print("년: ", tm.tm_year)
print("월: ", tm.tm_mon)
print("일: ", tm.tm_mday)
print("시: ", tm.tm_hour)
print("분: ", tm.tm_min)
print("초: ", tm.tm_sec)

거친 local_time을 깔끔하게 만들어 줄수 있답니당. ^^7

 

좀더 깔끔하게 할수 있습니다.

 

머라구요?????????? 좀더 깔끔하게?

바로 포맷하는 방법이죠

 

import time

tm = time.localtime()
print(tm)

#2023-3-17 12:30:44 PM
string = time.strftime("%Y-%m-%d %I:%M:%S %p", tm)
print(string)

결과값

박수짝짝짝짝.

 

strftime() 함수에서 쓰이는 포맷 기호를 가볍게 스쳐지나 가십시오...

 

 

%Y 네 자리 년도 …, 2020, 2021, 2022, 2023, ……
%y 두 자리 년도 00, 01, …, 99
%m 01, 02, …, 12
%d 01, 02, …, 31
%A 요일 Sunday, Monday, …, Saturday
%a 간략 요일 Sun, Mon, …, Sat
%H 시(24시) 01, 02, …, 23
%I 시(12시) 01, 02, …, 12
%p AM 또는 PM AM, PM
%M 01, 02, …, 59

 

 

실행시간을 지연시킬 수 있습니다.

컴퓨터는 프로그램 실행시간이 매우 빠르기 때문에

서버에서 차단을 당할 수 있기 때문에

지연시간을 넣어주면 좋습니다.

 

import time

print("시작!")
time.sleep(5)
print("5초 후 나타남!")

깜찍이

 

 

소요시간을 한번 보실래용?

import time

def func():
    sum = 0
    for i in range(1, 1000001):
        sum = sum + i


start = time.time()
func()
end = time.time()
print("소요시간:", end - start)

 

ㅎㅎ 1초도 안되용..

이래서 우리가 매크로한테 지는 겁니다....

 

 

 

 

 

 

 

하지만 우리에게는 무엇이 있죠???

바로 점심시간!!!!!!!!!

 

 

 

저희 조의 점심은 바로

분식문방구

 

 

분식문방구!_!

메뉴를 무려 5개나 시켰어용 o_o

 

저는 베이컨 치즈김치볶음밥이랑 꼬마 참치김밥이 제일 맛있었어용.

 

 

점심시간이 지나가고

저희 조용한 부트캠프에 대체 무슨 일이???

 

무려 썬업 탑이 올라간 모습입니다. ^^

하나씩 빼서 드시면 될 것 같네요. :)

 

 

 

ABC 부트캠프에서 점심 식사 후 제공해준 맛있는 커피 & 라떼

딸기라떼 2개, 소금커피 1개

 

 

 

 

 

다시 정신없이 파이썬에 빠져들어 봅시다.

 

 

 

이번에는 random 모듈입니다.

 

random 모듈은 임의의 수를 발생시키거나 리스트의 요소 중 임의의 수를 선택하는 사용됩니다.

 

random 모듈의 모듈 함수에서 5가지를 확인해볼 것인데용!

 

random.random() 0과 1 사이의 임의의 실수를 반환함
random.uniform() 주어진 두 수 사이의 임의의 실수를 반환함
random.randint() 주어진 영역 사이의 임의의 정수를 반환함
random.choice() 리스트, 튜플, 문자열 등에서 임의로 선택한 요소를 반환함
random.shuffle() 리스트를 임의의 순서로 섞음

 

import random

# 0과 1사이에 있는 임의의 실수 값을 반환
print(random.random())

# 주어진 두 수 사이의 임의의 실수 값을 반환
print(random.uniform(1,10))

# 두 수 사이에 있는 임의의 정수를 반환
print(random.randint(1, 6))

# 리스트, 튜플, 문자열의 요소 중 임의의 요소 값을 반환
print(random.choice([1,2,3,4,5,6]))

# 리스트 요소들의 순서를 임의로 섞음
list1 = [15,23,4,88,7]

random.shuffle(list1)
print(list1)

기본 코드 끝~!

 

 

 

 

 

갑자기 컴퓨터 vs 나 주사위 게임을 만들기로 했어요.

인간,,, 날 이길 수 있을까?

 

 

"""
주사위 게임 만들기
- 게임 시작 시간 표시 -> 주사위 던지기 -> 승부 판정하기 -> 계속 여부 확인하기
y -> 반복 , n = 게임 종료
"""
import time
import random

# 게임 시작 시간 표시
start = time.localtime(time.time())
chk_start = time.time()
print("게임 시작 시간: ", time.strftime("%H:%M:%S %p", start))

# 게임 여부 확인 변수 초기화
again = "y"

while True:
    if again == "y":
        print("two dice are rolling...")
        time.sleep(2)

        me = random.randint(1, 6)
        computer = random.randint(1, 6)

        print("나: ", me)
        print("컴퓨터: ", computer)

        # 승부 판정
        if me > computer:
            print("나의 승리")
        elif me < computer:
            print("컴퓨터의 승리")
        else:
            print("무승부")


        print("-"*50)

    else:
        break

    again = input("계속하시겠습니까? (y:예, n:아니오) ")

print("게임이 종료되었습니다.")
end = time.localtime(time.time())
chk_end = time.time()

print("게임 종료 시간: ", time.strftime("%H:%M:%S %p", end))
print("게임 사용 시간: ", chk_end-chk_start)

갸야약

 

 

 

 

 

 

 

 

이번에는 파일처리 하는 방법을 배워볼 것입니다.

굳이 메모장을 키지 않고 파이썬 안에서 코드를 이용해 

메모장을 키고 내용을 입력한다음 닫을 수 있습니다. ^^

 

"""
텍스트 파일에 데이터를 저장하기
"""

f = open("new_file.txt", "w", encoding="utf-8")
names = ["홍지수", "안지영", "김연수", "김예린", "한정연"]

for name in names:
    f.write(name + "\n")

print("파일 쓰기 완료!")
f.close()

결과

 

 

open() 함수의 파일 모드 종류입니다.

"r" 읽기 모드, 파일을 읽을 때 사용
"w" 쓰기 모드, 파일에 데이터를 저장할 때 사용
※ 파일이 존재하지 않으면 새로운 파일 생성, 해당 파일이 존재하면 기존 파일에 덮어씀
"a" 추가 모드, 기존에 파일에 데이터를 추가할 때 사용

 

 

추가하는것도 살짝 보여드릴게용 ㅎㅎ

 

"""
텍스트 파일에 데이터를 저장하기
"""

f = open("puppy_love.txt", "w", encoding="utf-8")
names = ["뽀삐야 사랑해!"]

for name in names:
    f.write(name + "\n")

print("파일 쓰기 완료!")
f.close()

f = open("puppy_love.txt", "a", encoding="utf-8")

names = ["뽀삐 싫어하는 사람 있나요?", "탕-!", "또 있나요?"]

for name in names:
    f.write(name + "\n")

print("파일 쓰기 완료!")
f.close()

 

 

완벽한 예제였습니다.

 

 

 

 

CSV파일을 읽어볼껀데용

어라 CSV파일이 뭐지? 할 수 있는데용

 

CSV파일이란 CSV(영어: comma-separated values)는 

몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일입니다.

 

이렇게 생긴 친구입니다 ^^!

어디에서나 쉽게 열릴 수 있다는 장점이 있죠

 

 

CSV 파일을 읽는 방법입니다. ^^7

"""
CSV 파일 읽기
"""

import csv

file_name = "weather.csv"
f = open(file_name, "r", encoding="utf-8")
lines = csv.reader(f)

for line in lines:
    print(line)

f.close()

 

 

 

드디어 찾아온 한계

 

조원이 가져온 꿀떡

savage

 

 

꿀떡먹고 정신 차렸습니다.

파이썬에게 사랑의 세레나데

 

 

 

 

이번에는 예외처리를 함 해볼까봐용

코딩을 하다보면 오류가 참 많죠

오류가 없다? = 뭔가 문제가 있다

오류가 있다? = 뭔가 문제가 있다

 

 

그런 오류들을 미리 잡아서 중지되지 않게 해줄 수 있어용

"""
변수가 정의되지 않아 오류 발생
"""

print(x)

아니 대체

이런걸 코드라고 만들어???!!!

 

 

x가 정의되지 않았습니다......

 

이런 오류가 발생하더라도 그냥 종료시킬 수 있는 방법이 있습니다.

 

바로,,,,,,,,,, 예외 처리.

 

 

 

예외처리

try ~ = 오류가 발생하는지 테스트하는 블록

except ~ = 오류를 처리하는 블록

finally~ = try와 except 블록이랑 상관없이 무조건 실행되는 블록

 

 

 

try~ except  구문

"""
예외처리
"""

try:
    print(x)
except NameError:
    print("변수가 정의되지 않아 오류가 발생함!")

 

try~ except~ finally~ 구문

"""
예외처리
"""

def get_value(list1, n):
    try:
        result = list1[n]
    except IndexError:
        print("인덱스가 범위를 벗어남!")
        result = -1
    finally:
        return result

data = [10, 20, 30]

print(get_value(data, 3))
print(get_value(data, 1))

 

 

와 !!!! 그거 아시나요?

벌써 10장까지 끝냈어요 ㅎㅎ

저희에게 남은건 이제 단 한 단원,,,,ㄷㄷ

 

안녕하세요 잠깐 쉬는시간인데

친구가 보내준 고양이 사진 보고 힐링하고 가시길 바랍니다.

 

 

 

 

그렇게 쉬는시간이 끝나고

수업도 끝났습니다. ^^!

 

행복해용

 

 

 

굿바이

꾸쥬워마이걸