탐색
가이드
@ein214
전체 보기
프로젝트
포스트
팔로잉
스크랩
전체 보기
프로젝트
포스트
팔로잉
스크랩
프로젝트 히스토리
프로젝트 상세 페이지
타임라인
리스트
2022.04.19
@ein214님이 포스트를 업데이트했습니다.
포스트
Day7 짝수이면서 7의 배수는 아닌 수 찾기
2022.04.19
@ein214님이 포스트를 업데이트했습니다.
포스트
Day2. 출력 프로그램 만들기
2022.04.12
@ein214님이 새 포스트를 작성했습니다.
Day15 가위바위보 게임
from random import choice def rsp_num(name): if name == "가위": return 1 elif name == "바위": return 2 else: return 3 def rsp_winner(you, com): result = you - com if result == 0: txt = "비겼습니다." elif result in [-2, 1]: txt = "축하합니다. 당신이 이겼습니다" else : txt = "컴퓨터가 이겼습니다." return txt rsp_list = ['가위', '바위', '보'] rsp = input("가위바위보 게임입니다. 무엇을 낼지 입력해 주세요. :") YOU = rsp COM = choice(rsp_list) print("사용자 : ",YOU) print("컴퓨터 : ",COM) print(rsp_winner(rsp_num(YOU), rsp_num(COM))) [실행결과]
2022.04.11
@ein214님이 새 포스트를 작성했습니다.
Day14 - 선택 좌표설정하기
class Point: def __init__(self, x, y): self.x = x self.y = y def setX(self, x): self.x = x def setY(self, y): self.y = y def get(self): return (self.x, self.y) def move(self, x, y): self.x += x self.y += y x = int(input("x좌표를 입력해 주세요. :")) y = int(input("y좌표를 입력해 주세요. :")) point = Point(x, y) print("현재 좌표: ", point.get()) print("x좌표 설정을 원한다면 x를, \ny 좌표 설정을 원한다면 y를 \n좌표 이동을 원한다면 m을 \n좌표 설정을 종료하려면 0을 입력해 주세요.") while(True): key = input("입력 :") if key == "x": point_x = int(input("x 좌표를 입력해 주세요. :")) point.setX(point_x) elif key == "y": point_y = int(input("y 좌표를 입력해 주세요. :")) point.setY(point_y) elif key == "m": move_x = int(input("x 좌표를 얼마만큼 이동할지 입력해 주세요. : ")) move_y = int(input("y 좌표를 얼마만큼 이동할지 입력해 주세요. : ")) point.move(move_x, move_y) elif key == "0": print("현재 좌표", point.get()) break else: print("잘못된 키 입력입니다.") [출력화면]
2022.04.11
@ein214님이 새 포스트를 작성했습니다.
Day14 선택 - 직사각형 넓이와 둘레
class Rectangle: def __init__(self, width, height): self.width = width self.height = height def calcRound(self): return (self.width + self.height) * 2 def calcArea(self): return self.width * self.height width = int(input("가로 : ")) height = int(input("세로 : ")) rect = Rectangle(width, height) print("직사각형의 둘레는", rect.calcRound(), "이고, 넓이는 ", rect.calcArea(), "입니다.") [출력결과]
2022.04.11
@ein214님이 새 포스트를 작성했습니다.
Day14 할인된 가격을 알려주는 계산기 클래스 만들기
class Calculator: def __init__(self, price, discount): self.price = price self.discount = discount def calc(self): return self.price - (self.price * self.discount / 100) def printCalc(self): print("최종 금액은 ", self.calc(), "입니다.") price = int(input("원가를 입력하세요. :")) discount = int(input("몇 퍼센트(%) 할인하나요? :")) if discount > 100: print("잘못된 퍼센트입니다.") else: calc = Calculator(price, discount) calc.printCalc() [출력결과]
2022.04.08
@ein214님이 새 포스트를 작성했습니다.
Day13 선택 - 영화 예매 프로그램 만들기
[출력화면] movies = ['미비포유', '해리포터', '맘마미아', '어바웃타임', '라라랜드'] print("===================영화목록=================") for i in movies: print(i) print("============================================") choice = input("예매할 영화를 선택해 주세요.") while choice not in movies: print("예매할 수 없는 영화입니다.") choice = input("예매할 영화를 선택해 주세요.") print(f"{choice}를 선택했습니다.") check = False while(not(check)): people = float(input("관람 인원수를 입력해 주세요.")) if (people < 1) : print("관람 인원수는 양수만 입력가능합니다.") elif (people % 1) > 0: print("관람 인원수는 정수만 입력가능합니다.") else: people = int(people) check = True print(f"관람할 인원수는 {people}입니다") coupon_dic = {"학생할인":3000, "지역할인":4000,"회원할인":5000} process = True use = input("할인권을 사용하려면 y, 금액 확인으로 넘어가려면 n을 입력해 주세요. :") while(process): if use == 'y': choice_coupon = input("할인권 이름을 입력해 주세요 : ") if choice_coupon in coupon_dic.keys(): sale = coupon_dic[choice_coupon] print(f"{coupon_dic[choice_coupon]}원 할인되었습니다.") process = False else: print("존재하지 않는 할인권입니다.") use = print("할인권을 다시 입력하려면 y, 아니면 n을 입력해 주세요.") elif use == 'n': sale = 0 print("할인권을 사용하지 않았습니다. ") process = False else: print("잘못입력하셨습니다.") break original_price = 12000 * people sale_price = sale * people total_price = original_price - sale_price print("<예매 상세 내역>") print("==================================") print("영화 제목 : ", choice) print(f"관람 인원 : {people}명") print(f"합계 금액 : {original_price}원") print(f"할인 금액 : {sale_price}원") print("-----------------------") print(f"실 결제금액 : {total_price}") print("==================================")
2022.04.08
@ein214님이 새 포스트를 작성했습니다.
Day13 선택 - 음료수 자판기
stock_list = { "물" : 5, "콜라" : 10, "사이다" : 3, "과일 주스" : 0 } menu_list = { "물" : 700, "콜라" : 1000, "사이다" : 1000, "과일 주스" : 800 } print(f""" ======음료수 목록======== 물\t\t\t\t{menu_list['물']}원 콜라\t\t\t\t{menu_list['콜라']}원 사이다\t\t\t\t{menu_list['사이다']}원 과일 주스\t\t\t{menu_list['과일 주스']}원 """) money = int(input("자판기에 넣을 금액을 입력해 주세요.")) drink = input("마시고 싶은 음료를 입력해 주세요.") print(f"{drink}의 가격은 {menu_list[drink]}원입니다.") if money < menu_list[drink]: print("돈이 부족합니다") else: if stock_list[drink] >= 1: print("주문이 완료되었습니다.") print(f"잔액은 {money - menu_list[drink]}") stock_list[drink] -= stock_list[drink] - 1 else: print("현재 해당 음료는 품절 상태입니다.") [출력화면]
2022.04.08
@ein214님이 새 포스트를 작성했습니다.
Day13 튜플과 딕셔너리로 문자열 길이 출력하기
sentence = ('hello', 'this is python', 'ok, bye~') dict = {} for item in sentence: dict[item] = len(item) print(dict) [출력화면] [딕셔너리] key와 value가 있는 자료형 key와 value에 넣을 수 있는 자료형이 다름. key에 넣을 수 있는 자료형은 제한적 변하지 않는 값인 숫자(정수,실수), 문자열, 튜플만 넣을 수 있음 리스트처럼 추가, 삭제, 수정 가능하지만 key, value를 함께 쌍으로 추가하거나 삭제해야함. key는 수정 불가 value만 수정
2022.04.07
@ein214님이 새 포스트를 작성했습니다.
Day12 선택 - 영어 단어에 사용된 알파벳 오름차순으로 정리하기
word = input("영어 단어를 입력하세요. : ") word = list(set(word)) word.sort() print("정렬결과 : ", word) # print("한큐에 끝내는 버전 : ", sorted(set(word))) [출력결과]
2022.04.07
@ein214님이 새 포스트를 작성했습니다.
Day12 문장 내 단어 오름차순으로 출력하기
sentence = input("문장을 입력해 주세요. :").split(" ") sort_list = list(set(sentence)) sort_list.sort() print(" ".join(sort_list)) [출력화면] [집합] 다른 자료형들과 달리 중복을 허용하지 않고, 순서가 없음 리스트나 튜플처럼 인덱스를 이용해 접근하는 것이 불가능 파이썬 내장 함수인 set()을 이용하거나 중괄호를 이용해 만들 수 있음. 단 중괄호 이용시에는 데이터 1개 이상 필수
2022.04.06
@ein214님이 새 포스트를 작성했습니다.
Day11 선택 - 2022년 a월 b일은 무슨 요일
months_list = [31,28,31,30,31,30,31,31,30,31,30,31] days_list = ['금','토','일','월','화','수','목'] month = int(input("월을 입력하세요.: ")) day = int(input("일을 입력하세요.: ")) if (month in range(1, 13) and day in range(1, months_list[month-1]+1)): total = day for i in range(month-1): total += months_list[i] y = days_list[total % 7] print(f"2022년 {month}월 {day}일은 {y}요일입니다") else: print("잘못 입력하셨습니다.") [출력화면] 사실 이틀연짱 선택과제가 너무 많아서 마지막 과제는 거의 참고를 보면서 했는데 점점 알고리즘의 기본기의 중요성에 대해 느끼게 된다
2022.04.06
@ein214님이 새 포스트를 작성했습니다.
Day11 선택 - 오름차순 정렬하기
# sort를 사용하지 말것 # 출력값은 리스트 자료형으로 출력 # 숫자는 총 5개를 입력받되 한번에 하나씩만 입력받음 numbers = [] for n in range(5): number = int(input("숫자를 입력하세요. :")) numbers.append(number) tmp = 0 for i in range(5): for j in range(i, 5): if numbers[i] > numbers[j]: tmp = numbers[i] numbers[i] = numbers[j] numbers[j] = tmp print("오름차순 정렬 : ", numbers) [출력화면] sort를 사용하지 말 것............
2022.04.06
@ein214님이 새 포스트를 작성했습니다.
Day11 선택 - 24시간제에서 12시간제로 변환
hour24 = input("24시 시준의 시간을 입력해 주세요. :").split(":") hour = int(hour24[0]) convert_hour = hour type = "" if hour < 0 or hour > 24: print("잘못된 숫자를 입력했습니다.") else : if hour >= 12: type = "PM" convert_hour = hour - 12 else: type = "AM" print(f"변환 시간 : {convert_hour}:{hour24[1]} {type}") [출력화면] 자꾸 예외처리 부분을 까먹는다. 잘못된 입력에 대한 부분은 기본적으로 항상 방어를 해야하는건데 자꾸 까먹게 됨.
2022.04.06
@ein214님이 새 포스트를 작성했습니다.
Day11 선택 - 회문판단하기
letter = [] word = input("단어를 입력해 주세요: ") for item in word: letter.append(item) rv_letter = list(reversed(letter)) if letter == rv_letter: print(f"{word}는 회문입니다.") else: print(f"{word}는 회문이 아닙니다.") [출력화면] 이전 필수과제에서도 그렇고 reverse한 리스트를 별도의 변수에 저장하고 싶었는데 계속 안됐었고 이번에도 reverse한 리스트를 저장해서 비교하고싶었는데 안되서 추천예제와 검색을 해보니 reversed라는 내장함수가 별도로 존재하고 있었다 reverse는 list type에서 지원하는 함수였고 반환하는 값이 없다 (이래서 변수에 저장할 수 없던것) 반면 reversed는 변환 후 reversed라는 객체를 반환하고 그걸 list로 변환하면 내가 원하는 방식대로 사용할 수 있었다
2022.04.06
@ein214님이 새 포스트를 작성했습니다.
Day11 뒤집은 소수
def reverse_number(n): number = list(str(n)) number.reverse() return int("".join(number)) def is_prime(n): count = 0 for i in range(2, n+1): if n % i == 0: count += 1 if count == 1: return True else: return False count = int(input("입력받을 숫자의 개수를 입력해 주세요.: ")) lst = [] for i in range(count): number = input(f"{i+1}번째 숫자를 입력해 주세요.: ") lst.append(number) for j in lst: reverse = reverse_number(j) if is_prime(reverse): print(reverse_number(reverse), end=" ") [출력화면] 처음에 문제 이해를 잘못해서 숫자입력 즉시 뒤집은 숫자가 소수면 출력하는줄 알았는데 입력을 다 받고나서 출력하는걸 확인하고 변경
2022.04.05
@ein214님이 새 포스트를 작성했습니다.
Day10 선택 - 끝말잇기
""" 첫번째 단어는 제약이 없다. 두번째 단어부터는 앞 단어의 마지막 글자와 동일한 글자로 시작되어야한다 앞에서 입력했던 단어를 다시 입력하는 경우에도 게임을 종료 5의 배수 번째 단어를 입력하고 나면 누적된 단어가 몇개인지 알려준다 """ words = [] index = 0 while(1): word = input() if index > 1 and (words[index-1][-1] != word[0]): print("틀린 단어를 입력하셨습니다. 게임을 종료합니다.") break elif word in words: print("앞에서 사용한 단어와 동일한 단어를 입력하셨습니다. 게임을 종료합니다.") break if (index+1) % 5 == 0: print(f"(중간 점검) 현재 {index+1}개의 단어를 입력하셨습니다.") words.append(word) index += 1 [출력결과]
2022.04.05
@ein214님이 새 포스트를 작성했습니다.
Day10 - 선택 숫자 n의 k번째 약수
lst = [] n = int(input("숫자를 입력해 주세요. : ")) k = int(input("몇 번째 약수를 알고 싶나요? : ")) for i in range(1, n+1): if n % i == 0: lst.append(i) if k > len(lst): print("입력한 숫자만큼의 약수가 존재하지 않습니다.") else : print(n, "의 ", k, "번째 약수는 ", lst[k-1], "입니다.") [출력결과]
2022.04.05
@ein214님이 새 포스트를 작성했습니다.
Day10 선택 - 퀴즈 점수 계산하기
answer = input("퀴즈 결과를 입력해 주세요.(예 : OOXOXXO) : ").split("X") total = 0 for i in answer: for j in range(0, len(i)+1): total = total+j print("퀴즈 점수 : ", total) [출력화면]
2022.04.05
@ein214님이 새 포스트를 작성했습니다.
Day10 입력받은 수의 평균 구하기
numsList = [] for i in range(7): number = int(input("정수를 입력하세요.: ")) numsList.append(number) print("평균", sum(numsList) / 7) [리스트 응용함수] 1. append() : 데이터 맨 뒤에 삽입 2. insert('값을 추가할 인덱스', '데이터') : 원하는 위치에 데이터 삽입 3. del() : 인덱스로 데이터 삭제 4. remove() : 원하는 값을 찾아 삭제 5. sort() : 리스트 정렬 6. reverse() : 리스트의 인덱스를 거꾸로 만들기 [리스트와 튜플 차이] 튜플 - 괄호 사용, 불변적, 괄호생략가능, 변하지 않는 값 리스트 - 대괄호 사용, 가변적, 대괄호 생략불가, 변할 수 있는 값
2022.04.04
@ein214님이 새 포스트를 작성했습니다.
Day9 - 선택 가운데 글자 찾기
string = input("가운데 글자를 찾을 단어를 입력하세요.") sel = len(string)//2 if len(string) % 2 == 0: print(string[sel-1:sel+1]) else: print(string[len(string)//2]) [출력화면] 참고예제와의 차이가 있다면 나는 몫을 구한다음 -1, +1로 가운데 글자를 출력했는데 예제에서는 출력해야할 부분의 인덱스 변수를 -1로 빼고 sel:sel+2로 더 보기좋게 구현한 것 같다..
2022.04.04
@ein214님이 새 포스트를 작성했습니다.
Day9 - 선택 두 숫자 사이의 n의 배수 찾기
numbers = input("숫자 두 개를 입력해 주세요. :") x = int(input("배수를 알고 싶은 숫자를 입력해 주세요:")) numsList = numbers.split(" ") number1 = int(numsList[0]) number2 = int(numsList[1]) if number1 > number2: print("잘못된 입력입니다.") else : for i in range(number1, number2+1): if i % x == 0: print(i, end=" ") [출력화면] [느낀점] 과제가 어려웠다기 보다는 출력이나 예외처리 등의 센스가 주인 과제라고 생각됐다.
2022.04.04
@ein214님이 새 포스트를 작성했습니다.
Day9 - 선택 자릿수의 합이 가장 큰 수 찾기
[코드1] def digitSum(x): sum = 0 for j in range(len(temp[item])): sum += int(temp[item][j]) return sum numbers = input("각 숫자를 공백으로 구분하여 입력해주세요.") temp = numbers.split(" ") max_sum = 0 max_index = 0 for item in range(len(temp)): digit_sum = digitSum(temp[item]) if max_sum < digit_sum: max_sum = digit_sum max_index = item print(temp[max_index]) [코드2 - 추천 참고예제] numList, sumList = [], [] nums = input("각 숫자를 공백으로 구분하여 입력해 주세요.") numList = nums.split(' ') for i in numList: partial_sum = 0 for n in i: partial_sum += int(n) sumList.append(partial_sum) maxNum = max(sumList) result = numList[sumList.index(maxNum)] print(result) [출력화면] [느낀점] 과제 포스팅하다가 벌써 두번째 날려먹음.. 생각한건 2번인데 리스트에 추가하는 방법때문에 오류나서 1번으로 진행한 뒤 예제를 보고나서 이해했다.
2022.04.04
@ein214님이 새 포스트를 작성했습니다.
Day9 선택 - 영어 문장 대소문자 올바르게 사용하기
# hi. nicE to MEEt yOU. i'M hAPPY. tHen, gOOD Bye. # THe wEaTHer iS vERy CleaR TOdAy. i nEEd To go FoR a waLK. strings = input("문장을 입력해 주세요.") sentence = strings.split(".") for item in range(len(sentence) - 1): convert = sentence[item].strip().capitalize() sentence[item] = convert print('. '.join(sentence)) [출력화면] [느낀점] 유일하게 참고예제가 더 이해가 안갔던 과제이다. 굳이 저렇게 케이스를 나누는게 더 낫나? 싶었다. 그래서 이번엔 처음에 구현한대로 유지했다 [문자열 관련 일부 내장함수] 문자열.count('word') : 문자열 내 존재하는 word의 개수를 반환 문자열.find('word') : word와 같은 문자를 찾아 위치를 반환 문자열.index('word') : word와 같은 문자가 처음 발견된 위치를 반환하지만. 없다면 오류 발생함 문자열.upper() / 문자열.lower() : 문자를 모두 대문자/소문자로 변환하여 반환 문자열.capitalize() : 첫 글자를 모두 대문자로 변환하고, 나머지 글자들을 소문자로 변환하여 반환 문자열.strip() : 문자열 양쪽의 공백을 삭제하여 반환 문자열.split('word') : word를 기준으로 문자열읠 나누어 리스트 형태로 반환 문자열.replace('a', 'b') : 문자열 내 존재하는 모든 a를 b로 교체하여 반환 '"word"'.join(list_a) : 작은 따옴표 안에 있는 내용을 각 list_a 요소 사이에 넣어서 리스트를 문자열로 반환
2022.04.04
@ein214님이 새 포스트를 작성했습니다.
Day9 이름 출력하기
name = '제 이름은 째롱이입니다.' print(name[6:-4]) [출력결과] 문자열 슬라이싱 : 원하는 위치부터 원하는 위치까지 문자열을 자르는 것 문자열 포맷 코드 1. 문자열 포맷 코드 사용하기 - %d : 정수, %f : 실수, %s : 문자열 2. format 함수 사용하기 - 파이썬 내장함수 사용 3. f문자열 사용하기 - 파이썬 3.6버전 이상에서만 사용가능한 방식 f'포맷팅할 문자열{변수}' 문자열 응용함수 len() : 길이 구하는 함수 count() : 특정 문자 갯수 세기 문자열.count(문자) find() : 특정 문자의 위치 찾기 문자열.find(문자) replace() : 문자열 변환 문자열.replace(기존문자, 대체 문자) split() : 특정 문자를 기준으로 자르기 문자열.split(문자)
2022.04.01
@ein214님이 포스트를 업데이트했습니다.
포스트
Day8 최댓값의 위치 구하기
2022.04.01
@ein214님이 새 포스트를 작성했습니다.
Day8 최댓값의 위치 구하기
def findMax(list): temp_max = 0 for item in range(len(list)): if list[item] > list[temp_max]: temp_max = item return temp_max list = [2, 10, 5, 6, 20000, 50, 50, 78, 3400] print(findMax(list)) # 출력결과 # 4 리스트는 내가 아는 그 리스트겠거니 생각해서 구현했고 range 부분은 리스트의 총 길이만큼 반복하면 되겠구나 싶어 len까지 입력해보니 자동완성으로 딱 나와서 맞는 문법이겠구나 싶어서 구현 max를 비교하는 부분이 살짝 헷갈렸는데 이 부분만 참고를 보고 진행을 했다
2022.04.01
@ein214님이 새 포스트를 작성했습니다.
Day8 함수를 활용한 구구단
def printMultiple(n): for item in range(1, 10): print("%d X %d = %d" % (n, item, (n * item))) while(1): n = int(input("2부터 9 사이 숫자를 입력해 주세요. (1을 누르면 프로그램이 종료됩니다.")) if n == 1: print("프로그램을 종료합니다.") break elif n > 9: print("범위 외의 숫자입니다. 다시 시도하세요.") else: printMultiple(n) # 출력화면 2부터 9 사이 숫자를 입력해 주세요. (1을 누르면 프로그램이 종료됩니다.1 프로그램을 종료합니다. 2부터 9 사이 숫자를 입력해 주세요. (1을 누르면 프로그램이 종료됩니다.11 범위 외의 숫자입니다. 다시 시도하세요. 2부터 9 사이 숫자를 입력해 주세요. (1을 누르면 프로그램이 종료됩니다.2 2 X 1 = 2 2 X 2 = 4 2 X 3 = 6 2 X 4 = 8 2 X 5 = 10 2 X 6 = 12 2 X 7 = 14 2 X 8 = 16 2 X 9 = 18 2부터 9 사이 숫자를 입력해 주세요. (1을 누르면 프로그램이 종료됩니다.3 3 X 1 = 3 3 X 2 = 6 3 X 3 = 9 3 X 4 = 12 3 X 5 = 15 3 X 6 = 18 3 X 7 = 21 3 X 8 = 24 3 X 9 = 27 전자레인지 과제 때의 while문을 생각해서 수월하게 과제 진행을 할 수 있었다. 추천 예제부분을 안보고 최대한 진행했는데 비슷한 결과물이 나와서 만족스러웠다
2022.04.01
@ein214님이 새 포스트를 작성했습니다.
Day8 도형별 넓이 계산기
[맨처음 작성한 버전] def calculate(n): area = 0 if n == 1: radius = int(input("반지름을 입력하세요. :")) area = radius * radius * 3.1415 print("반지름이 %d인 원의 넓이는 약 %.2f입니다." % (radius, area)) elif n == 2: base = int(input("삼각형의 밑변을 입력하세요.:")) height = int(input("삼각형의 높이를 입력하세요.:")) area = base * height / 2 print("밑변의 길이가 %d 이고 높이가 %d인 삼각형의 넓이는 %d 입니다." % (base, height, area)) elif n == 3: width = int(input("가로 길이를 입력하세요.")) height = int(input("세로 길이를 입력하세요.")) area = width * height print("가로가 %d이고 세로가 %d인 직사각형의 넓이는 %d입니다." % (width, height, area)) elif n == 4: base = int(input("한 변의 길이를 입력하세요. :")) area = base ** 2 print("한변의 길이가 %d인 정사각형의 넓이는 %d입니다" % (base, area)) else: print("잘못된 숫자를 선택하셨습니다.") print(""" ========도형을 선택하세요=========== 1. 원 2. 삼각형 3. 직사각형 4. 정사각형 """) shapes = int(input("도형을 선택하세요.:")) calculate(shapes) [추천예제 참고한 수정] def circle_a(x): area = x * x * 3.1415 return area def tri_a(x, y): area = x * y / 2 return area def rect_a(x, y): area = x * y return area def squ_a(x): area = x * x return area print(""" ========도형을 선택하세요=========== 1. 원 2. 삼각형 3. 직사각형 4. 정사각형 """) menu = int(input("도형을 선택하세요.:")) if menu == 1: radius = int(input("반지름을 입력하세요. :")) print("반지름이 %d인 원의 넓이는 약 %.2f입니다." % (radius, circle_a(radius))) elif menu == 2: base = int(input("삼각형의 밑변을 입력하세요.:")) height = int(input("삼각형의 높이를 입력하세요.:")) print("밑변의 길이가 %d 이고 높이가 %d인 삼각형의 넓이는 %d 입니다." % (base, height, tri_a(base, height))) elif menu == 3: width = int(input("가로 길이를 입력하세요.")) height = int(input("세로 길이를 입력하세요.")) print("가로가 %d이고 세로가 %d인 직사각형의 넓이는 %d입니다." % (width, height, rect_a(width, height))) elif menu == 4: base = int(input("한 변의 길이를 입력하세요. :")) print("한변의 길이가 %d인 정사각형의 넓이는 %d입니다" % (base, squ_a(base))) else: print("잘못된 숫자를 선택하셨습니다.") 과제 자체가 어렵다고 느끼진 않았는데 생각을 너무 단순하게 해서 위의 첫번째처럼 코딩했다가 추천부분을 보고 고쳐야겠다고 단번에 납득했다 함수만 있으면 된다에 집중해서 함수 하나 만들고 if 문으로 다 나눠버린것이 실패원인 동작은 하지만 개발자로써 한 함수에서는 하나의 동작만 해야된다는것을 간과한것 같다. 약간 결과물을 보고 현타가 온 부분
2022.04.01
@ein214님이 새 포스트를 작성했습니다.
Day8 정수 n까지의 합 구하기
def getSum(inputNumber): sum = 0 for item in range(0, inputNumber+1): sum += item return sum number = int(input("정수를 입력하세요:")) print("0부터 %d까지의 합계는 %d입니다" % (number, getSum(number))) # 출력결과 # 정수를 입력하세요:50 # 0부터 50까지의 합계는 1275입니다 파이썬에서는 함수 선언을 def로 선언후 : 으로 마무리 함수명, 매개변수, 반환값으로 구성 파이썬에서 미리 구현한 함수는 내장 함수, 문법적인 의미를 가지고 있는 단어는 예약어 PHP의 습관적 중괄호를 썼다가 지우기를 반복하는 중
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day7 선택5 - 전자레인지 시간 설정하기
print("1. 10초\t2. 30초\t3. 1분\t4. 10분\t5. 시작") total_time = 0 while(1): number = int(input("원하는 버튼의 숫자를 입력해 주세요.")) if number == 5: print("전자레인지를 작동합니다.") break elif number == 1: total_time += 10 elif number == 2: total_time += 30 elif number == 3: total_time += 60 elif number == 4: total_time += 600 else: print("잘못된 입력입니다.") break print("%d : %02d" % (total_time // 60, total_time % 60)) # 출력결과 # 1. 10초 2. 30초 3. 1분 4. 10분 5. 시작 # 원하는 버튼의 숫자를 입력해 주세요.1 # 0 : 10 # 원하는 버튼의 숫자를 입력해 주세요.2 # 0 : 40 # 원하는 버튼의 숫자를 입력해 주세요.3 # 1 : 40 # 원하는 버튼의 숫자를 입력해 주세요.4 # 11 : 40 # 원하는 버튼의 숫자를 입력해 주세요.5 # 전자레인지를 작동합니다. 처음에 while 조건부분을 잘못 써서 무한루프의 향연이었다 입력을 받고 숫자를 더해 총 시간을 구해서 다시 출력을 해주는 부분은 잘 이해를 했는데 입력을 받는 부분까지 while 문안에 써야한다는 부분은 아예 생각을 못했어서 추천예제를 보고나서야 이 해했다. % 포맷을 이용해 문자열을 출력하는 부분은 계속 선택예제에서만 보기만 했었지 오늘 처음 써봤는데 대학교때 배웠던 C랑 오묘하게 기억이 섞여서 안 보고 해보다가 몇번의 삽질 끝에 결국 보고 제대로 사용법을 익혔다.
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day7 선택4 - 8월 달력 출력하기
print("일\t월\t화\t수\t목\t금\t토") for i in range(1, 32): if i == 1: print("\t", i, end="\t") elif i % 7 == 0: print("\n", i, end="\t") else: print(i, end="\t") # 출력결과 일 월 화 수 목 금 토 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 어떻게 해야되겠단 생각은 대강 잡혀있었는데 추천예제와 비교해 보니 상당히 야매로 한 부분이 있는것 같다. 가독성이나 코드분석을 위해서도 while로 구현한 예제가 더 좋은것 같다. 그치만 여기까지 오는데 진이 빠져서 수정해보진 않았음.
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day7 선택3 - 소인수분해
number = int(input("숫자를 입력해 주세요:")) x = 2 while x <= number : if number % x == 0: number = number / x print(x, end = " ") else: x = x + 1 # 출력결과 # 숫자를 입력해 주세요:36 # 2 2 3 3 일단 소인수가 언제적 소인수인지 기억이 안나서 첫 손을 떼는데 좀 오래 걸렸던것 같다 얼추 비슷하게 구현해서 실행을 했지만 아예 프린트문 자체가 출력되지가 않아서 황당했었는데 첫 if문에서 number를 x로 나누는게 아니라 x를 number로 나누는 삽질을 해서 그런거였다
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day 7 선택2 - 팩토리얼 계산하기
number = int(input("숫자를 입력해 주세요.:")) fact = 1 for i in range(1, number+1): fact = fact * i print(str(number) + "!은 " + str(fact) + "입니다.") # 출력결과 # 숫자를 입력해 주세요.:7 # 7!은 5040입니다. 팩토리얼은 마무리문제 중에 샘플을 한번 봤어서 수월하게 할 수 있었던 과제였다
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day7 선택1 - 직각이등변 삼각형 만들기
height = int(input("삼각형의 높이를 입력해 주세요.:")) for i in range(1, height+1): print(' ' * (height - i) + '*' * i) """ for i in range(0, number): for j in range(0, number-i-1): print(" ", end = "") for k in range(number-i-1, number): print("*", end = "") print() """ # 출력결과 삼각형의 높이를 입력해 주세요.:5 * ** *** **** ***** for문으로 쌩쇼를 했었는데 한번으로 해결된 샘플도 보고 기본의 차이인가 느끼게된 과제 슬슬 알고리즘 지식 등의 기본이 드러나는 과제가 많이 생기는것 같다.
2022.03.31
@ein214님이 새 포스트를 작성했습니다.
Day7 짝수이면서 7의 배수는 아닌 수 찾기
count = 0 for number in range(1, 101): if number % 2 == 0 and number % 7 != 0: count += 1 print(count) # 출력결과 43 for문과 while문은 php 할 때도 자주 쓰던것들이라 이해하는데는 문제가 없었지만 과제를 하면서 for문이 더 좋을지 while문이 더 좋을지 파악하는건 약간 헷갈렸다
2022.03.30
@ein214님이 새 포스트를 작성했습니다.
Day6 선택-윤년 판단하기
year = int(input("연도를 입력하세요.:")) if (year % 4 == 0 and year % 100 > 0) or year % 400 == 0: print(year, "년은 윤년입니다.") else: print(year, "년은 윤년이 아닙니다.") # 출력결과1 """ 연도를 입력하세요.:2020 2020 년은 윤년입니다. """ # 출력결과2 """ 연도를 입력하세요.:2023 2023 년은 윤년이 아닙니다. """ 윤년을 계산하는 조건식을 잘 파악하는게 관건인 과제였던것같다. 나는 100으로 나눠서 0보다 큰 걸로 조건식을 만들었는데 예제들에는 != 0 으로 구현되어 있어서 그 부분이 다른점 같은데 별 차이는 없는것같아서 변경하지 않고 유지
2022.03.30
@ein214님이 새 포스트를 작성했습니다.
Day6 - 선택 BMI 결과보기
height = int(input("키를 입력하세요:")) weight = int(input("몸무게를 입력하세요.:")) bmi = weight / ((height * 0.01) ** 2) print("BMI 지수가", end=" ") if bmi >= 25: print(bmi, " 이므로 비만입니다.") elif bmi >= 23 and bmi < 25: print(bmi, " 이므로 과체중입니다.") elif bmi >= 18.5 and bmi < 23: print(bmi, " 이므로 정상 체중입니다.") else: print(bmi, " 이므로 저체중입니다.") # 출력내용1 """ 키를 입력하세요:185 몸무게를 입력하세요.:60 BMI 지수가 17.531044558071585 이므로 저체중입니다. """ # 출력내용2 """ 키를 입력하세요:165 몸무게를 입력하세요.:53 BMI 지수가 19.4674012855831 이므로 정상 체중입니다. """ # 출력내용3 """ 키를 입력하세요:178 몸무게를 입력하세요.:83 BMI 지수가 26.19618735008206 이므로 비만입니다. """ bmi 계산하는 부분은 내가 처음에 했을 때는 height_meter = height / 100 100으로 나눠서 변수에 별도 저장을 했었는데 컴퓨터상의 공간을 별도로 만드는거보다는 추천예제처럼 바로 계산하는게 낫다고 생각해서 변경했다. 거듭제곱연산자로 계산할 수도 있다고 해서 거듭제곱연산자로 변경해서 과제 완료
2022.03.30
@ein214님이 새 포스트를 작성했습니다.
Day6 합격과 불합격 통보하기
score1 = int(input("첫 번째 과목의 점수를 입력하세요:")) score2 = int(input("두 번째 과목의 점수를 입력하세요:")) score3 = int(input("세 번째 과목의 점수를 입력하세요:")) average = (score1 + score2 + score3) / 3 if average >= 50: print("평균 점수는 " + str(average) + "점으로 합격입니다.") else: print("평균 점수는 " + str(average) + "점으로 불합격입니다.") # 출력결과1 첫 번째 과목의 점수를 입력하세요:30 두 번째 과목의 점수를 입력하세요:40 세 번째 과목의 점수를 입력하세요:50 평균 점수는 40.0점으로 불합격입니다. # 출력결과2 첫 번째 과목의 점수를 입력하세요:65 두 번째 과목의 점수를 입력하세요:75 세 번째 과목의 점수를 입력하세요:44 평균 점수는 61.333333333333336점으로 합격입니다. [핵심내용] 콜론(:) 다음 문장은 들여쓰기 해야한다. 파이썬은 들여쓰기에 민감하기 때문 안하면 아예 별도의 구문이 되어버린다 타 언어에서의 elseif 는 파이썬에서는 elif로 사용 조건문에서 else는 생략가능 [느낀점] 오늘자 조건문 내용은 타언어할때도 모두 하는 내용이기때문에 수월하게 할 수 있었고 약간의 문법차이만 있었던것 같다. 과제를 하는 요령도 생긴것 같다. 입력받을 내용을 파악하고 연산해야될 부분을 잘 파악해보기
2022.03.29
@ein214님이 새 포스트를 작성했습니다.
Day5 선택 - 반올림 계산기
number = float(input("숫자를 입력해 주세요 :")) result = int(number + 0.5) print(number,"를 반올림하면 ", result, "입니다") 당연히 항상 함수써서 했던 부분을 직접해보려니 잘 안떠올라서 힌트와 추천을 참고할 수 밖에 없었는데 생각보다 간단했고 잘 계산하니 원리를 알 수 있었다.
2022.03.29
@ein214님이 새 포스트를 작성했습니다.
Day5 생년월일로 연도,월,일 출력하기
# 생년월일로 연도, 월, 일 출력하기 birth = int(input("생년월일을 입력해주세요: ")) year = birth // 10000 month = birth % 10000 // 100 day = birth % 100 print(year, "년", month, "월", day, "일 생이네요!") [Chapter5] 사용자에게서 입력을 받을 때는 input 활용 input()으로 입력받은 모든 것은 문자열로 처리 int(), float(), str()을 사용해 각각 정수, 실수, 문자열 자료형으로 변환 가능 [느낀점] 4일차 선택과제 진행할 때 필요한 내용을 5장에서 배운것 같다 선택과제는 예습을 위해 필요한 느낌
2022.03.28
@ein214님이 새 포스트를 작성했습니다.
Day4 선택 - 시간 변환 계산기
input_time = int(input("시간(초)을 입력해 주세요. :")) print(input_time, "초", end="= ") sec = input_time if sec >= 86400: day = sec // 86400 sec -= day print(day, "일", end=" ") if sec >= 3600: time = sec // 3600 sec -= time * 3600 print(time, "시간", end=" ") if sec >= 60: minute = sec // 60 sec -= minute * 60 print(minute, "분", end=" ") if sec > 0: print(sec, "초") [출력내용] [느낀점] 입력을 받는 부분은 아직 배우지 않은 내용같아서 변수의 힌트와 추천 예제를 참고해서 진행. 안보고 하려했는데 약간 아쉬운 부분이다 end연산자로 줄바꿈 없이 계산 진행할때마다 print를 해줬으면 되는건데 다 계산 후 나중에 출력하려고 하니 그 과정에서 좀 헤맸던것 같다 내가 할 땐 각각의 day, time, minute로 변수를 만들어서 진행했는데 예제처럼 하면 확실히 효율적일것같다. 각각 만들어둔 변수는 계산하고 출력하고 나면 바로 끝인데 괜히 만들어둔 느낌이 있다. str 함수로 숫자형 데이터타입을 감싸면 하던 습관대로 + 로 숫자와 문자연결이 가능하다는걸 알았다.
2022.03.28
@ein214님이 새 포스트를 작성했습니다.
Day4 어떻게 돈을 내야 할까?
# 계산기 price = 3420 thousand_units = price // 1000 hundred_units = (price % 1000) // 100 won_units = (price % 100) // 10 print(price, "원을 계산하려면") print("1000원 지폐", thousand_units, "장") print("100원 동전 ", hundred_units, "개") print("10원 동전", won_units, "개가 필요합니다.") [핵심내용] 기본 나눗셈(/)의 결과는 실수형, 버림나눗셈(//) 모듈로(%) 연산자 결과는 정수형 버릿 나눗셈(//) 은 몫을 나타내고, 모듈로(%) 연산자는 나머지를 나타냄 거듭제곱 연산자는 ** [느낀점] 자꾸 php 사용할 때처럼 쉽게쉽게 문자열과 숫자를 연결하고 싶어한다
2022.03.25
@ein214님이 새 포스트를 작성했습니다.
Day3 자료형 마스터
[Chapter3 핵심내용] 변수는 데이터를 저장할 수 있는 컴퓨터상의 공간 자료형은 데이터의 형식이며 문자열, 숫자, 불 등등 type() 함수를 이용해 데이터 자료형을 확인 할 수 있음. 숫자자료형 - int, float bool 자료형 - True, False 꼭 지켜야할 변수명 규칙 1) 숫자로 시작할 수 없다. 2) 공백을 사용할 수 없다. 3) 예약어는 변수이름으로 사용할 수 없다. 지키지않아도 되지만 권장하는 규칙 1) 스네이크 케이스 규칙에 따라 짓는다 2) 저장할 데이터의 의미를 담아 짓는다. [추가적으로 알고가는 케이스 규칙] 카멜 케이스 - classStudentName 케밥 케이스 - class-student-name 파스칼 케이스 - ClassStudentName 스네이크 케이스 - class_student_name title = "당근앱 만들기" students = 214 rank = 3.1 is_free = False print(type(title)) print(type(students)) print(type(rank)) print(type(is_free)) [오늘의 느낀점] php 사용할 때는 카멜케이스를 주로 썼던것 같고 css 사용시에는 케밥, 스네이크 케이스를 주로 써왔던것같다. 대충 내가 쓰는건 이런케이스구나 인지만 하고 있다가 정확한 규칙의 종류에 대해 알고 지나가는 느낌 bool 자료형에서 True, False 가 대소문자 구문이 필수라는 점이 새로웠다 문자 자료형이 str와 string으로 길고 짧은 차이가 살짝 있다는점(어차피 같은 소리지만)
2022.03.24
@ein214님이 새 포스트를 작성했습니다.
Day2. 출력 프로그램 만들기
딱히 떠오르는 것은 없고 변수씨의 힌트를 참고하여 제가 어제 해야했던 루틴들로 출력해봤습니다. 기존에 항상 php로 개발을 해 왔어서 차이점을 느끼는 과정도 묘하게 재미가 있는 것 같습니다. 여러줄로 그대로 출력했다면 확실히 간단히 끝나긴 했겠지만 변수씨 추천대로 최대한 2장 내용에서 배운 내용들로 출력을 진행해봤는데 sep 의 개념을 잡는데 약간 착오가 있었던 것 같습니다 처음엔 print("파이썬", "공부하기[ ]", sep="O") 이런 식으로 작성을 했었어서 파이썬O공부하기[ ] 와 같은 형태로 출력이 됐었는데 수정하면서 감을 잡아간 것 같습니다. [출력내용] <오늘 해야 할 일> ------------------ 파이썬 공부하기[O] 필라테스 하기[O] 9시전에 일어나기[x] [코드] print("<오늘 해야 할 일>\n------------------") print("파이썬 공부하기[", "]", sep="O") print("필라테스 하기[", "]", sep="O") print("9시전에 일어나기", end="[x]")
2022.03.23
@ein214님이 포스트를 업데이트했습니다.
포스트
Day1. Visual Studio Code 설치
2022.03.23
@ein214님이 새 포스트를 작성했습니다.
Day1. Visual Studio Code 설치
visual studio code 설치하고 필수 관문 Hello, world! 찍어보기 성공 php만 해왔어서 예전에 잠시 쓰다가 Phpstorm만 계속 썼었는데 포맷한 노트북에 파이썬을 쓰기 위해 다시 VScode 설치하니 감회가 새롭네요 :)
2022.03.22
@ein214님이 새 포스트를 작성했습니다.
Day0. 무사히 완주할 수 있기를!
김변수 파이썬 1기 내가 내손으로 신청한 최초의 스터디 무사히 완주할 수 있기를 바랍니다! php는 야매로 써왔지만 파이썬은 기초부터 탄탄히 쌓아갈 수 있기를!