import random
random.random() # 0에서 1 사이의 실수
random.randint(-100,100) # a에서 b 사이의 랜덤한 정수
items = ['a','b','c','d']
random.choice(items)
random.sample(items, 2)
[random.choice(items) for _ in range(10)] #복원추출
for _ in range(10):
print(random.choice(items)) #복원추출
print(items)
random.shuffle(items)
print(items)
#진짜 랜덤이 없다?
random.seed(123) #시드를 고정
random.random() #랜덤 값이 고정
'''
# print(ans_num)
#사용자가 숫자를 맞추기 위해 입력해야 겠네
user_num = int(input("숫자를 입력하세요. 1에서 {} 사이의".format(num)))
# print(ans_num,user_num)
#비교하는 과정
#같을 때
if ans_num == user_num:
print("정답")
break
#입력한 숫자가 정답보다 클 때
elif ans_num < user_num:
print("더 낮은 숫자입니다")
print(f"{5-(i+1)}의 기회가 남아있습니다.")
#입력한 숫자가 정답보다 작을 때
else:
print("더 높은 숫자입니다")
print(f"{5-(i+1)}의 기회가 남아있습니다.")
#업다운 힌트를 주면 어때?'''- 임의의 수의 사람들로 구성된 그룹이 있다고 가정할 때, 이 사람들을 무작위로 여러 팀으로 나누는 프로그램을 작성해보세요. 사용자는 전체 인원 수와 팀당 인원 수를 입력할 수 있어야 하며, 프로그램은 이를 바탕으로 랜덤하게 팀을 구성해야 합니다.'''
#현재 시간 얻기
import time
current_time = time.time()
current_time
#날짜와 시간 형식화
local_time = time.localtime(current_time)
local_time
time.strftime('%Y-%m-%d %H:%M:%S')
%%time #노트북 환경에서 시간을 측정
#프로그램 일시 중지
for i in range(10):
print('{}번째 메시지'.format(i+1))
time.sleep(1) #1초에 간격을 가지고 실행
start_time = time.time()
time.sleep(2)
end_time = time.time()
print("프로그램 실행 시간 : {}초".format(end_time-start_time))
#타이머 프로그램(스탑워치)
#시작 입력 -> 현재 시간을 기록
#종료 입력 -> 종료 시간을 기록
#시작과 종료 시간의 차이를 출력
msg = input("시작을 입력하세요 : ")
if msg == "시작":
start_time = time.time()
msg = input("종료를 입력하세요 : ")
if msg == "종료":
end_time = time.time()
print("경과 시간은 {}초".format(end_time-start_time))
from datetime import datetime
now = datetime.now()
now
start_day = datetime(2024,2,19,9)
start_day
#날짜와 시간 포맷 변경
now = datetime.now()
now
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
formatted
type(formatted)
#문자열로부터 날짜와 시간 파싱
date_str = '2024-02-28 10:37:57'
dt = datetime.strptime(date_str,"%Y-%m-%d %H:%M:%S")
dt
#날짜와 시간 차이 계산
from datetime import datetime , timedelta
start_day #우리 처음 만난 날
today = datetime.now()
delta = today - start_day
delta.days
#날짜와 시간의 산술 연산
one_week_later = now + timedelta(weeks=1)
one_week_later
now
import pytz
time_zone = pytz.timezone("Asia/Seoul")
seoul_time = datetime.now(time_zone)
seoul_time
birthday = input("생일을 입력하세요! : (연-월-일)")
birthday = datetime.strptime(birthday, "%Y-%m-%d")
now_year = datetime.now().year
next_birthday = datetime(datetime.now().year+1, birthday.month, birthday.day)
now = datetime.now()
delta = (next_birthday - now).days
print(f"내년 생일은 {delta}일 남았네요")
delta
now = datetime.now()
next_birthday
next_birthday - now
import os
current_directory = os.getcwd()
current_directory
!cd ..
os.mkdir("new_dir")
!ls
os.makedirs("shopping/computer")
os.rmdir("new_dir")
os.rmdir("shopping") #지워지지 않음
import shutil
shutil.rmtree("shopping") #조심해서 쓸 것
os.chdir("../")
os.getcwd()
os.chdir("day7")
os.getcwd()
os.chdir("../")
os.getcwd()
os.chdir("day8")
os.getcwd()
os.getcwd()
entries = os.listdir("day8") #?
for entry in entries:
print("{}를 처리".format(entry))
home_directory = os.getenv('PATH')
home_directory
HOME_DIRECTORY = "/workspace"
#홈 디렉토리로 이동
os.chdir(HOME_DIRECTORY)
import glob #os.listdir과 비교해서 살펴보자
PATH = "sample_data"
glob.glob(os.path.join(PATH,"*.csv"))
#비교
os.listdir(PATH)
glob.glob(os.path.join(PATH,"*/.csv"),recursive=True)
csv_files = glob.glob(os.path.join(PATH,"*/.csv"))
csv_files
sorted(csv_files)
#사용자가 디렉토리 지정
#확장자 지정
#해당 디렉토리의 해당 확장자 파일 목록을 출력
dir_path = input = ("검색할 디렉토리를 적으세요 : ")
exp_file = input = ("검색할 확장자를 적으세요 : ")
file_list = glob.glob(os.path.join(dir_path,"*.{}".format(exp_file)))
for file_name in file_list:
print(file_name)
import sys
sys.exit("프로그램 종료")
import sys
sys.version
sys.executable #파이썬 인터프리터의 경로
sys.path
type(sys.path)
sys.getdefaultencoding()
import json #파이썬의 딕셔너리 형식
data = {"name":"John","age":30,"city":"Seoul"}
data
json.dumps(data) #dumps : 데이터를 인코딩
type(json.dumps(data)) #dumps : 문자열 형식으로 바꿔줌
json_string = json.dumps(data)
json_string
data = json.loads(json_string)
data
type(data)
with open("data_file.json",'w') as f:
json.dump(data,f) #dumps 아님 주의
with open("data_file.json",'r') as f:
data_get = json.load(f) #loads 아님 주의
data_get
print(json.dumps(data,indent=4))
import requests
response = requests.get("http://www.naver.com")
response.text
data = {"title":"python","major":"backend"}
data
response = requests.get("https://httpbin.org/get",params = data) #API 테스트하는 사이트
response
response.url
response = requests.post("https://httpbin.org/post",data = data)
print(response.text)
response_result = response.json()
type(response_result)
response_result
headers = {"User-Agent":"My User Agent 1.0"}
response = requests.get('https://httpbin.org/get', headers=headers)
response.request.headers
try:
response = requests.get('https://httpbin.org/get', timeout = 0.00001)
except requests.exceptions.Timeout:
print("시간이 지연되니 다음 단계로")
with requests.Session() as session:
session.get('https://httpbin.org/cookies/set/sessioncookie/0000000')
response = session.get('https://httpbin.org/cookies')
print(response.text)
#이전에 당첨된 번호를 받아오기
def get_lotto_nums(drwno):
url = f'https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={drwno}'
response = requests.get(url)
output = response.json()
result = []
result = [output[f'drwtNo{i+1}'] for i in range (6)]
# result.append(output['bnusNo'])
return tuple(result)
output = get_lotto_nums(1107)
output
from tqdm.auto import tqdm
#당첨 번호 모음
numbers = []
for drwno in tqdm(range(1,1108+1)):
result = get_lotto_nums(drwno)
numbers.append(result)
len(numbers)
nums = [i for i in range(1,46)]
#랜덤 번호 생성기
def generate_nums():
return sorted(random.sample(nums,6))
def 태성님(numbers):
while True:
lotto_nums = generate_nums()
# 이전에 당첨되었던 번호인지 효과적으로 확인하는 방법?
if lotto_nums in set(numbers):
continue
else:
break
return lotto_nums
%%time
lotto_nums = 태성님(numbers)
def 찬미님(numbers):
while True:
lotto_nums = generate_nums()
check_dict = {i:[] for i in range(1,46)}
for number in numbers:
check_dict([number[0]].append(number))
#체크하기
if lotto_nums in check_dict[lotto_nums[0]]:
continue
else:
break
return lotto_nums
%%time
lotto_nums = 찬미님(numbers)
import math
num = 3.14
print(math.ceil(num)) #올림
print(math.floor(num)) #내림
print(math.trunc(num)) #버림
print(round(num,2)) #반올림
print(round(num,1)) #반올림
print(math.exp(1))
print(math.log(2.71828))
print(math.log10(100))
print(math.pow(2,3))
math.pi
math.sin(math.pi/2) #sin90
math.cos(0)
math.e
math.factorial(5)
math.gcd(36,60)
math.sqrt(16)
#counter
from collections import Counter
count = Counter(numbers)
count
colors = ["blue","blue",'red','red','yellow']
count = Counter(colors)
count
type(count)
text = "Python의 collections 모듈은 다양한 컨테이너 데이터 타입을 제공합니다. 이 모듈은 일반적인 데이터 구조를 효율적으로 사용할 수 있게 해주며, 다양한 애플리케이션에서 데이터 처리를 최적화할 수 있도록 돕습니다. 다음은 collections 모듈의 주요 컨테이너 타입에 대한 활용 사례와 예제 코드입니다."
word_list = text.split(" ")
count = Counter(word_list)
count
from collections import defaultdict
d = defaultdict(int)
d['a']+=1
d['a'] #기본 값이 있기 때문에 오류X
test_dict = {}
test_dict['a']+=1 # 값이 비어있기 때문에 오류
d = defaultdict(list)
d[1].append((1,2,3,4,5,6))
d
d = defaultdict(lambda:100)
d['key1'] += 1
d['key1']
from collections import OrderedDict
d = OrderedDict()
d['banana'] = 3
d['apple'] = 5
d['melon'] = 1
d