본문 바로가기

코딩 연습/코딩배우기166

[python] Image 다운로드 후 Thumbnail 만들고 이미지 품질 조정하기 ■ 웹사이트에서 큰 이미지를 다운로드 후, png 타입 썸네일 이미지를 만든다. ■ 원본 이미지에 대해 여러 품질(quality)의 이미지를 만든다. ■ 관련 라이브러리 설치 pip install requests pip install pillow pip install pilkit import requests from PIL import Image from pilkit.processors import Thumbnail # 이미지 다운로드 후 저장 image_url = 'https://cdn.pixabay.com/photo/2020/08/14/13/57/cat-5488070_960_720.jpg' img_binary = requests.get(image_url).content with open('./cat... 2020. 8. 29.
[python] map과 filter 대신 리스트 컴프리헨션 사용하기 ■ map()함수는 함수와 리스트를 인자로 받고, 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아준다. ■ filter()함수는 리스트 원소들을 함수에 적용하여 결과가 True인 값만 뽑아서 새로운 리스트를 만든다. # map map1 = map(lambda x: x ** 2, range(5)) print(map1) # print(list(map1)) # [0, 1, 4, 9, 16] # filter odd_nums = filter(lambda x: x % 2, range(10)) print(odd_nums) # print(list(odd_nums)) # [1, 3, 5, 7, 9] # map, filter 사용 map_fil = map(lambda x: x**2.. 2020. 8. 26.
[python] 피보나치(Fibonacci) # 피보나치 수열 # 1 1 2 3 5 8 13 21 34 55 # a b a+b # a b a+b # a b a+b # a b a+b ################# # a = b, b = a+b ################# def fibonacci_1(n): lst = [] for i in range(n): if i = 2일때 앞 2개 더해서 추가 print(lst) fibonacci_1(10) # 다른 방법으로 ========================= def fibonacci_2(n): a = 1 b = 1 for i in range(n): print.. 2020. 8. 25.
[python] 주어진 6개의 숫자 맞추기(로또번호 맞추기) ■ 숫자 1 ~ 45 사이의 6개의 번호가 랜덤하게 추출되어 있는 상태에서 숫자(로또번호)를 1개씩 입력하면 맞춘 번호를 알려준다. 총 6번의 입력 기회가 주어지며, 맞춘 번호는 제외하고 남은 번호로 계속 게임을 진행한다. import random def number_serach(): seq_num = random.sample(range(1, 46), 6) lotto_num = list(seq_num) right_num = [] cnt = 0 while True: if cnt == 6: break if len(right_num) > 0 : print(f'\n맞춘 번호 : {right_num}') search = input(f'\n{cnt+1}번째 숫자(로또 번호 1개)를 입력하세요> ') if searc.. 2020. 8. 24.
[python] 입력받은 숫자 리스트에서 최대값과 그 위치(index) 찾기 ■ 숫자를 연속적으로 입력받고, 입력받은 숫자들 중에서 최대값을 찾고, 그 최대값의 위치와 최대값이 몇 번 더 있는지 알려주기 import copy def main(): num_list = [] while True: num = input("숫자를 입력하세요.(입력을 끝내려면 'q' 누름)>> ") try: if num == 'q': break else: num_list.append(int(num)) except Exception as err: print(err, '\n--> 숫자를 입력해주세요!!') continue if len(num_list) != 0: max, index, equi_cnt = max_judge(num_list) print('\n입력한 숫자 리스트는 {}이고,'.format(num_l.. 2020. 8. 24.
[python] 주사위 게임 ■ 주사위 게임 : 주사위 2개를 던져 나오는 합이 많으면 이기는 게임 import random import time game = True while game: print('\n\n############ 주사위 게임 ############\n') while True: time.sleep(0.5) answer = input("You,던질래요? ('y' or 'n') > ") if answer == 'n': break elif answer == 'y': for i in range(3, 0, -1): print(f'{i}') time.sleep(0.5) you1 = random.randint(1, 6) you2 = random.randint(1, 6) print(f'You 주사위 결과 : {you1}, {yo.. 2020. 8. 23.
[python] 패킹(packing), 언패킹(unpacking) 그리고 가변인자 ■ 패킹은 하나 이상의 값들을 묶는 행위이고, 언패킹은 묶여 있는 값들을 풀어내는 행위임 tpl = (1, 3, 4, 6) # 패킹 lst = [10, 20, 30, 40] # 패킹 a, b, c, d = tpl # 언패킹 print(a, b, c, d) # 1 3 4 6 x, y, *z = tpl # 언패킹 print(x, y, *z) # 1 3 4 6 print(x, y, z) # 1 3 [4, 6] - z는 리스트로 묶임 n, m, *others = lst # 언패킹 print(n, m, *others) # 10 20 30 40 print(n, m, others) # 10 20 [30, 40] def nums(): return 1, 2, 3, 4, 5 # 파이썬은 여러 개의 리턴 값 가능(튜플 패킹.. 2020. 8. 23.
[python] 제너레이터(Generators) 함수 & 표현식 ■ 파이썬의 제너레이터(generator)로 생성된 객체는 iterator 객체이며, next() 함수를 호출하여 값을 하나씩 추출한다. 'yield'가 하나라도 있으면 제너레이터가 되고, yield는 return 역할을 한다. 제너레이터 사용 시 장점은 메모리 공간의 효율성에 있다. 즉, 제너레이터 객체는 반환값을 미리 만들어서 저장해 두지 않는다. def gen_num(): # 제너레이터 함수 정의 print('first number') yield 1 print('second number') yield 2 print('third number') yield 3 g = gen_num() # 제너레이터 객체 생성, 한 문장도 실행 안됨 print(type(g)) # # next() 호출 시 yield 부분.. 2020. 8. 21.
[python] 소수(素數, prime number) 구하기 ■ 소수(素數, prime number) : 소수는 자기 자신과 1을 제외하고는 인수가 없는(어떤 수로도 나눠지지 않는) 정수 # 2에서부터 주어진 수(number)까지의 소수(素數, prime number) 구하기 # number의 숫자를 바꾸면 그 숫자까지의 소수를 구할 수 있다. def prime_number(): number = 100 prime_num = [] for n in range(2, number + 1): flag= 0 if n 2020. 8. 21.
[python] 리스트 컴프리헨션(List Comprehension) & 이터러블(iterable) 객체 ■ 리스트 컴프리헨션(List Comprehension) - 리스트 내에 계산식, for 문, if 문 등을 삽입하여 리스트를 생성하는 것 - 이 표현식은 list, set, dict과 같은 자료형, 그리고 소괄호를 이용한 generator 객체 생성에도 이용 가능함 # 짝수 구하기 even_num = [n for n in range(1, 11) if not n % 2] print(even_num) # [2, 4, 6, 8, 10] # 3의 배수 구하기 three_multi = [n for n in range(1, 11) if not n % 3] print(three_multi) # [3, 6, 9] # 이중 for문 (주사위 2개로 나올 수 있는 경우의 수) dice = [str(i) + ':' + s.. 2020. 8. 21.