본문 바로가기

TIL/Python

(34)
[파이썬] 재귀 함수의 깊이 제한 늘리기 / 메모이제이션(memoization) 1. 재귀 함수 깊이 제한 어제 재귀함수의 기본 개념을 익히고 문제를 하나하나 풀어보면서 기본기를 익히고 있었는데 아무리 봐도 맞는 것 같은데 제대로 동작을 안하는 코드가 있어서 튜터님에게 물어보았다. N = int(input()) def recursive_ver2(N, sum): # N이 0에 도달하면 sum 값을 반환하고 종료 if N == 0: return sum # N이 0이 아니라면 N-1 해준 새 함수를 호출하고 이 함수는 종료 return recursive_ver2(N - 1, sum + N) a = recursive_ver2(N, 0) print(a) 나는 1234를 넣고 테스트를 해보고 있었는데 튜터님이 한번 작은 수를 넣어보라고 하셔서 5를 넣었더니 제대로 동작했다. 파이썬에는 재귀의 ..
가위 바위 보 게임 만들기! 과제 과정 import random cpu_number = random.randint(1, 3) my_number = input('가위바위보 : ') def my(my_number): if my_number == "가위": my_rps = 1 elif my_number == "바위": my_rps = 2 elif my_number == "보": my_rps = 3 else: print('유효한 입력이 아닙니다.') return(my_rps) a = my(my_number) print(a) 처음은 내가 입력한 가위바위보 문자열을 숫자열로 바꿔서 그 숫자를 컴퓨터의 랜덤 숫자와 비교해서 승패를 구분할 수 있게 해보려했다. 그런데 그렇게 코드를 짜다 보니 컴퓨터의 랜덤 숫자 1, 2, 3 을 각각 가위, 바위, 보로 바..
Up Down 게임 만들기! 과제 과정 대망의 나의 첫 과제이다. 알쏭달쏭하지만 대~~충은 감이 오니 바로 맨땅에 헤딩 해보기로 했다. import random random_number = random.randint(1,100) number = input() print(number) print(random_number) 일단 랜덤 숫자와 내가 입력한 숫자가 잘 나오는지 확인하기 위해 이렇게 코드를 짜고 동작 시켜보았다. 12를 입력하니 12, 와 48이 잘 출력되는걸 확인하였고 random_number를 확인하기위해 몇번 더 돌려보니 1~100 사이의 랜덤한 숫자가 잘 출력되는 것 같았다. 그런데 입력할 때 마다 입력한 값이 2번씩 나오길래 print(number)를 지워봤더니 input()은 굳이 print()가 필요없다는 것을 알았다. 그..
ChatGpt 5주차 강의 정리 form action = "{{url_for('music_create')}}" : 입력할 때 데이터를 어디(music_create)로 보낼지 method : 데이터를 보내는 방식 유저 사용자(추천인)의 이름을 넣어주세요. 노래 제목 좋아하는 노래 제목을 넣어주세요. 가수 앨범 커버URL Submit input 받는 곳 전부 name (username, title, artist, image_url) 작성 : app.py로 보내주기 위해 @app.route("music/create/") def music_create(): # form에서 보낸 데이터 받아오기 username_receive = request.args.get("username") title_receive = request.args.get("ti..
requests HTTP GET 자바스크립트의 object는 파이썬 딕셔너리와 비슷함. 요청이 들어오면 응답을 하는데, json(Javascript Objext Notation) 형태로 주고받을 수 있다. requests.get('사이트주소') → 사이트에 http 요청 보내기. 정상적으로 실행되면 http 응답 객체인 이 리턴됨 response = requests.get('사이트주소') 식으로 만들어 response.json() 하면 딕셔너리를 볼 수 있다. 이를 또 변수화해 json_data = response.json() json_data['key'] 로 value를 조회할 수 있다. flask로 임포트한 request를 쓴다면 request.get_json('key') 와 같다. from flask import ..
Chat Gpt 4주차 숙제 과정 - 스크래핑할 때 헤더 까먹지말자 4주차 숙제 설명 제일 먼저 코드 스니펫으로 기본 뼈대부터 구성하고 멜론 홈페이지에서 스크래핑할 준비를 위해 멜론 url 주소와 requests 결과를 저장할 response 생성해줬다. from flask import Flask, render_template from bs4 import BeautifulSoup import requests app = Flask(__name__) @app.route('/') def index(): url = 'https://www.melon.com/chart/index.htm' response = requests.get(url) return render_template() if __name__ == '__main__': app.run() 그 다음 requests 상태 코..
dictionary를 이용한 함수 이 함수가 이해가 안되서 혼자 한참이나 들여다보고 GPT한테도 물어보고 결국 이해가 됐기에 기록해둔다. def set_profile(**kwargs): profile = {} profile["name"] = kwargs.get("name", "-") profile["gender"] = kwargs.get("gender", "-") profile["birthday"] = kwargs.get("birthday", "-") profile["age"] = kwargs.get("age", "-") profile["phone"] = kwargs.get("phone", "-") profile["email"] = kwargs.get("email", "-") return profile user_profile = { "n..
ChatGPT 3주차 숙제 푸는 과정 1, 2주차는 숙제가 쉬운 복습 정도의 문제여서 그렇게 어렵지 않게 풀 수 있었는데 3주차가 되니 숙제가 갑자기 너무 어려워져서 일단 뒤로 미룬 뒤 몇일 동안 사전 지식을 공부해가며 끙끙대며 숙제를 풀었다. 그래서 오늘은 이 3주차 숙제를 풀어나간 과정을 기록하고자 한다. 요게 바로 3주차 숙제다. 보기만 해도 머리가 아파오는 숙제다. 처음 봤을 때 얼마나 당황했던지... 그래도 친절하게 필요한 key 네임은 전부 적어주신 것에 감사를 느낀다. #app.py @app.route("/answer") def answer(): URL = f"http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList. json?key=f..
파이썬 심화 문법 코드 컨벤션이란? 네이밍 컨벤션 대표적으로 Pascal, Snake, Camel 표기법이 있다. Pascal : PythonIsVeryGood / 각 단어 대문자 시작 Camel : pythonIsVertGodd / 첫 문자 제외 각 단어 대문자 시작 Snake : python_is_very_good / 각 단어를 언더바로 구분 파이썬 네이밍 컨벤션 함수 = Snake 클래스 = Pascal PIE = 3.14 / 상수를 표현할 때는 예외적으로 모든 문자를 대문자로 표현 - 상수 : 프로그램에서 값이 바뀌지 않는 변수 numbers = [1, 2, 3, 4] / list를 표기할 때는 복수로 표현. 혹은 number_list 와 같이 표현 - for number in numbers : 반복문 사용 시 가..
라우팅 할 url 주소 뒤에 / 드디어 Chat Gpt 3주차 숙제를 끝내고 4주차 강의를 듣던 중 오류가 있었다. from flask import Flask, render_template app = Flask(__name__) @app.route('/') def home(): return render_template('motto.html') @app.route('/music') def music(): return render_template('music.html') if __name__ == "__main__": app.run(debug=True) render_template으로 motto.html하고 music.html 을 불러오려는데 motto는 잘 접속이 되는데 music에는 접속이 안되는 오류였다. motto, music 둘 ..