전체 글 73

[코드잇] 파이썬(python)으로 숫자야구 게임 시뮬레이션 구현하기

[프로젝트] 숫자야구 숫자 3개 뽑기 : generate_numbers from random import randint def generate_numbers(): numbers = [] while len(numbers) < 3: # 리스트의 요소가 3개 미만일 동안 반복 num = randint(0,9) if num not in numbers: # 중복값을 없애기 위해 중복이 아닐때만 리스트에 추가하기 numbers.append(num) return numbers print(generate_numbers()) 숫자 예측하기 : take_guess def take_guess(): print("숫자 3개를 하나씩 차례로 입력하세요.") guess =[] while len(guess) < 3: # 리스트에 요..

Coding/Python 2021.09.27

[2021.09.24] 10번째 파이썬 공부 : 꾸준함을 유지하자

추석 연휴 동안에는 코드잇 강의나 따로 파이썬 공부는 하지 않고, 우연히 코뮤니티의 추석맞이 챌린지를 발견해서 하루에 한 문제씩 코드를 작성해봤다. 그리고 연휴가 끝난 금요일이 되서야 다시 코드잇 강좌를 들었다. 이번 내용은 로또 시뮬레이션을 구현하는 프로젝트였는데, 배운 것들을 활용할 수 있는 부분이 많았다. 1. for ~ in ~ range() 로 리스트를 효율적으로 다룰 수 있다는 사실을 잊지 말자. 2. 코드를 쓰기 전에 while문을 써야 효율적 일지 for문을 써야 효율적일지 고민해보자. 3. from itertools import combinations를 통해 조합을 나타내고 계산할 수 있다. 4. 사용자 지정 함수 def function(): 를 사용할 때 어떤 값을 받아(paramete..

[코드잇] 파이썬(python)으로 로또 시뮬레이션 구현하기

[프로젝트] 로또 시뮬레이션 번호뽑기 : generate_numbers 정수 n을 파라미터로 받고 무작위로 1과 45 사이의 서로 다른번호 n개 뽑기, 리스트로 반환 for ~ in ~ range 함수를 이용해 n개 요소가 있는 리스트 만들기 from random import randint def generate_numbers(n): rand_list = [] for number in range(n): rand_list.append(randint(1,45)) # n번 반복할 동안 리스트에 무작위 값 추가하기 return rand_list 당첨 번호 뽑기 : draw_winning_numbers 일반 당첨번호 6개와 보너스 번호 1개가 포함된 리스트 반환. 일반 당첨번호는 정렬되어 있고, 보너스 번호는 마..

Coding/Python 2021.09.24

[코뮤니티] 블랙잭 파이썬(python)으로 구하기 (추석맞이 코딩챌린지)

3일 차 코뮤니티의 추석맞이 코딩 챌린지는 블랙잭을 파이썬으로 구현하는 것입니다. 문제는 다음과 같습니다. 카지노에서 자주 플레이되는 블랙잭의 규칙은 카드의 합이 21이 넘지 않는 한도 내에서, 카드의 합을 가장 크게 만드는 게임이다. 이와 유사하게, 코드메이트 버전의 블랙잭은 N개의 카드 중 세장의 카드를 뽑아 X를 넘지 않으면서 X와 가장 가까운 수의 카드 조합을 골라내는 규칙으로 진행된다. 첫째 줄에는 카드의 개수 N과 목표 값 X가 주어지며, 두 번째 줄에는 카드에 쓰여있는 수가 입력으로 주어질 때, X에 가장 가까우면서 X를 넘지 않는 카드 세장의 합을 구해서 출력하세요. 이 문제를 풀기 위해서 제가 생각한 방법은, 1. 입력받은 카드에 쓰여있는 수의 조합을 모두 구한다. (Combination..

Coding/Python 2021.09.20

[코뮤니티] 달팽이의 정상 정복 파이썬(python)으로 구하기 (추석맞이 코딩챌린지)

코뮤니티의 코딩 챌린지 2일차. 달팽이가 나무를 올라가기 위해서는 며칠이 걸리는 지 계산하는 문제입니다. 문제 내용은 다음과 같습니다. 달팽이는 높이가 N인 나무를 올라가고자 한다. 달팽이는 낮에는 A미터를 올라갈 수 있지만, 밤에 휴식을 취하면서 B미터 미끄러져 내려온다. 달팽이가 나무 정상에 도달하기 위해선 며칠이 걸릴까요? 조건 1 : 첫번째 줄에 A, B, N이 공백으로 구분되어 주어집니다. 조건 2 : 정상에 도달하는게 불가능할 경우, -1을 출력하세요. 수열은 수학에서 아래의 점화식으로 정의되는 수열입니다. 제가 생각한 방법은 다음과 같습니다. n 일차 낮일 때 달팽이가 올라간 나무의 높이는 nA - (n-1)B 미터이고, 이때 정상에 도달했다고 한다면 nA - (n-1)B >= N 일 때의 ..

Coding/Python 2021.09.19

[코뮤니티] 피보나치 수열 파이썬(python)으로 구하기 (추석맞이 코딩챌린지)

피보나치수열은 이전 두 값을 더한 값이 다음 값이 되는 수열입니다. 이를 점화식으로 나타내면 다음과 같습니다. 만약 (i)번째 피보나치수열을 구하는 코드를 부족한 실력이지만, 파이썬으로 작성하면 어떻게 될지 알아보겠습니다. num = [0, 1, 0] i = 0 n = 2 i = int(input("피보나치 수열의 몇번째 숫자를 출력하시겠습니까? : ")) if i >= 2: print(f"{num[0]} + 0 = {num[2]}") while n = 2: print(f"{num[0]} + 0 = {num[2]}") while n

Coding/Python 2021.09.18

[2021.09.16] 9번째 파이썬 공부 : 배운걸 잊지말자

공부를 하면서 배운 내용이 점점 많아지다보니, 이전에 배웠던 것을 잊어버려서 사용을 못하거나 비효율적으로 코드를 짜는 일이 종종 생긴다. 정리한 내용을 복습하면서 다시한번 기억을 상기시켜야겠다. 1. import [file] as [name] 으로 name이라는 이름으로 파일을 불러올 수 있다. 2. from [file] import [function] 으로 파일의 함수 중에서 특정한 함수만 가져올 수 있다. 3. math, random, os, datetime과 같이 파이썬에 내장되어있는 standard library가 존재한다. 4. input 함수를 사용해 사용자가 입력한 값을 저장할 수 있다. 5. with open('directory/filename', 'r', decoding = 'UTF-8'..

[코드잇] 파이썬(python) 사용자 입력받기(input), 파일 읽고쓰기(with ~ open), strip, split

사용자 입력 받기 input 사용자에게 입력받아 출력하는 함수이다. input() 은 입력 받은 값을 문자열로 처리한다. 연산을 하기 위해서는 다른 자료형으로 변환해야한다. name = input("이름을 입력하세요 : ") # 입력되면 input부분이 문자열로 대체됨 print("이름 : ", name) # 이름 : [입력된 값] x = int(input("숫자를 입력하세요 : ")) # input은 문자열로만 받음 print(x + 5) # [입력된 값] + 5 파일 읽고 쓰기 파일 읽기 with open('directory/filename', 'r' ) as f 로 파일을 불러와 변수에 저장할 수 있다. for문을 사용해 파일 내용을 불러와 출력할 수 있다. with open('data/chicke..

Coding/Python 2021.09.16

[2021.09.14] 8번째 파이썬 공부 : 컴퓨터식 사고

파이썬 공부를 하면서 느끼는 것은, 어떤 기능을 구현하기 위해서 코드를 짜는 것이 단순히 아무렇게나 아는 것들을 모조리 집어 넣어 하는게 아니라는 것이다. 문제를 풀었을 때 내가 쓴 코드와 정답을 보면 내 코드가 훨씬 길고 복잡하게 작동하는 경우가 많았다. 어떻게 코드를 작성해야 좀 더 간단하면서도, 효율적으로 할 수 있을지 생각해야한다는 것이다. 1. 파이썬 데이터의 자료형에 따라 aliasing이 일어날 수 있다. (dict, list) 2. list(x)로 값을 복사한뒤 변수를 지정해주면 aliasing을 방지할 수 있다. 3. 리스트와 문자열을 비슷한 부분이 많고, 활용할 수 있는 부분도 있다. 4. list(string)를 통해 문자열을 리스트로 한번에 만들어 수정할 수 있다. 5. list.r..

[코드잇] 파이썬 (python) 모듈(import) 사용하기, standard library(math, random, datetime, os) 맛보기

파이썬 모듈 맛보기 모듈 같은 폴더의 다른 파일에 있는 함수를 불러올 수 있다. import [file] as [name] : file의 이름 대신으로 name을 사용할 수 있다. from [file] import [function] : file의 함수 중에서 특정 function 몇 개만을 가져올 수 있다. # calculator 파일 def add(x,y): return x + y def subtract(x,y): return x + y def multiply(x,y): return x * y def divide(x,y): return x / y import calculator as calc # calculator 이름 대신 calc 이름을 쓰겠다! print(calc.add(2, 5)) # 7 pr..

Coding/Python 2021.09.14

[코드잇] 파이썬(python) Aliasing(별명, 가명) - 가변형(mutable), 불변형(immutable), 리스트와 문자열의 공통점 / 차이점

파이썬 데이터의 비밀 Aliasing 파이썬 자료형의 따라 aliasing이 일어난다.불변형 (immutable) : tuple, str, int, bool, float 가변형 (mutable) : dict, list 변수 이름이 적힌 이름표를 값에 단다고 생각할 수 있다. x = 5 # 5에 x라는 이름표를 단다. y = x # x = 5 이므로 5에 y 이름표를 단다. y = 3 # 한 이름표는 한 곳에만 달릴 수 있다. 5에 있던 y 이름표가 없어지고 3에 y 이름표가 달린다. print(x) # 5 print(y) # 3 리스트의 경우 가변형이기 때문에 값이 다 바뀐다. x = [2, 3, 5, 7, 11] y = x # 가명 (alias) # [2, 3, 5, 7, 11]에 y 이름표를 단다. ..

Coding/Python 2021.09.14

[2021.09.13] 7번째 파이썬 공부 : 주말에는 쉬어야할까?

금요일에 for 반복문과 range 함수를 공부하고, 월요일에 그 다음강의인 사전에 대해 공부했다. 근무와 공부를 동시에 하고 있는만큼, 평일에 빡세게 하고 주말에 쉬자는 생각으로 토요일, 일요일에는 코딩 공부를 손도 대지 않았다. 그렇다고 해서 주말에 딱히 제대로 놀거나 다른 활동을 한 것도 아니다. 주말에도 한 챕터 정도는 들을 필요가 있어보인다. 다음 주말은 추석 연휴라 실천할 수 있을 지 모르겠지만... 1. for 반복문을 사용하면 상황에따라 while 보다 간단하게 구현할 수 있는데, 리스트에서 하나씩 값을 불러오는 형태다. 2. range 함수는 파라미터 1개, 2개, 3개로 메모리 효율성을 높이고 for문과 사용할 수 있다. 3. 거듭제곱은 x ** y 로 계산할 수 있다. 4. 마이너스 ..

[코드잇] 파이썬(python) 사전(dictionary), key-value pair, for ~in문 활용

사전 Key - Value pair(키- 값 쌍)로 이루어져 있다. 리스트와 다르게 인덱스 순서가 없다. 정수 외에 문자열과 같은 다른 자료형을 key나 value로 사용할 수 있다. dictionary[key] = value my_dictionary = { 5: 25, # key=5, value=25 2: 4, 3: 9, '엄마': 'mother' } print(type(my_dictionary)) # class 'dict' print(my_dictionary) # {5: 25, 2: 4, 3: 9, '엄마': 'mother'} print(my_dictionary[3]) # 9 print(my_dictionary['엄마']) # mother my_dictionary[9] = 81 # key 9 추가 p..

Coding/Python 2021.09.13

[코드잇] 파이썬(python) for 반복문, range 함수 (parameter 1개, 2개, 3개)

for 반복문 상황에 따라 while문 보다 더 깔끔할 수 있다. 조건 부분이 없다. 상황에 따라 판단해서 더 좋은 것을 사용하면 된다. my_list = [2, 3, 4, 5, 7, 11] for number in my_list: print(number) my_list = [2, 3, 4, 5, 7, 11] i = 0 while i < len(my_list): print(my_list[i]) i += 1 range 함수 장점깔끔함 메모리 효율성 간편함 파라미터 1개 버전 0 부터 stop -1 까지의 범위 for i in range(stop): print(i) # 0 ~ stop-1 파라미터 2개 버전 start 부터 stop-1 까지의 범위 for i in range(start, stop): prin..

Coding/Python 2021.09.10

[2021.09.09] 6번째 파이썬 공부.

벌써 파이썬 공부도 6번째가 되었다. 아직은 기본적인 문법과 개념을 익히는 정도이지만, 나름 재미를 붙이고 공부하고 있다. 코드잇의 강의를 듣는것 이외에도 모각코(코뮤니티)라는 네이버 카페를 통해 매일 올라오는 과제를 공부하며 해나가고 있다. 코딩 커뮤니티 - 코뮤니티 [파이썬/... : 네이버 카페 코뮤니티 [코딩공부/독학/스터디/대외활동] : python, C언어, java, 자바스크립트, HTML, CSS, 웹/앱개발 cafe.naver.com 배운 내용은 다음과 같다. 1. 변수에 값을 여러개 저장하는 리스트는 인덱스가 0부터 시작한다. 2. len(list)로 요소의 갯수를 불러올 수 있는데, 갯수만큼 반복되는 while문에서 유용하게 사용할 수 있다. 3. 인덱스 슬라이싱은 일부분 만을 가져올..