남들이 안해본것을 해서 궁극적인 지식의 완성을 목표로 하는 블로그입니다. 제품리뷰 , IT, 프로그래밍 관련글을 포스팅합니다. 또한 자기만 읽으려고 만든 정리 노트식의 글들을 싫어합니다. 비전공자나 처음 본 사람도 최대한 이해할 수 있도록 프로그래밍 관련 글들을 쉽게 적으려고 노력하고 있습니다. 보안 계통과 컴퓨터의 Low-Level 한 분야에 관심이 많습니다.
#------------------------------------ 2일차 # 연습문제 01 x = int(input("x: ")) y = int(input("y: ")) print("두수의 합:", x+y) print("두수의 차:", x-y) print("두수의 곱:", x*y) print("두수의 평균:", (x+y)/2) print("큰수: ", max(x,y)) print("작은수: ", min(x,y)) # 연습문제 02 r = int(input("r: ")) h = int(input("h: ")) print("원기둥의 부피:", 3.141592 * r**2 * h) # 연습문제 04 import math x1 = int(input("x1: ")) y1 = int(input("y1: ")) x2 = int(input("x2: ")) y2 = int(input("y2: ")) d = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) print("두점 사이의 거리=", d) #연습문제 05 import turtle as t import math t.shape("turtle") t.reset() x1 = int(input("x1: ")) y1 = int(input("y1: ")) x2 = int(input("x2: ")) y2 = int(input("y2: ")) d = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) #두점 사이의 거리 공식 t.goto(x2, y2) t.write(f"두점 사이의 거리= {d}") #연습문제 03-05 string = input("문자열을 입력하시오: ") print(string[0:2] + string[-3:]) string = input("문자열을 입력하시오: ") print(string[0:2] + "하는 중") string = input("기호를 입력하시오: ") string2 = input("중간에 삽입할 문자열을 입력하시오: ") print(string[0] + string2 + string[1]) #연습문제 06 lst = [1,2,3,4] print("리스트 =", lst) print("리스트 숫자들의 합 =", lst[0] + lst[1] + lst[2] + lst[3]) #sum 함수로 대체 #print("리스트 숫자들의 합 =", sum(lst)) #연습문제 07 import turtle as t t.shape("turtle") t.reset() c1 = input("색상 #1을 입력하시오: ") c2 = input("색상 #2을 입력하시오: ") c3 = input("색상 #3을 입력하시오: ") #c1 fill t.fillcolor(c1) t.begin_fill() t.circle(50) t.end_fill() #GOTO FRONT t.penup() t.forward(100) t.pendown() #c2 fill t.fillcolor(c2) t.begin_fill() t.circle(50) t.end_fill() #GOTO FRONT t.penup() t.forward(100) t.pendown() #c3 fill t.fillcolor(c3) t.begin_fill() t.circle(50) t.end_fill() #------------------------------------ 3일차 #연습문제 02 age = int(input('나이 입력 : ')) if(age <= 7 or age >= 65): print("무료 입장!!!") else: print("유료 입장!!!!") #연습문제 04 age = int(input('성적을 입력하시오 : ')) if(age >= 90): print("A학점입니다.") elif(age >= 80): print("B학점입니다.") elif(age >= 70): print("C학점입니다.") elif(age >= 60): print("D학점입니다.") elif(age <= 59): print("F학점입니다.") #연습문제 05 from random import * #random 모듈 사용을 위해 import rnd1 = randint(1,100) #1~100까지의 난수생성 (range와 다르게 끝자리를 포함한다.) rnd2 = randint(1,100) sub = rnd1 - rnd2 #정답값 question = int(input(F"{rnd1}-{rnd2}=")) if(question == sub): #사용자 입력값과 정답값이 일치할경우 (정답일경우) print("맞았습니다.") else: print("틀렸습니다.") #연습문제 07 from random import * #random 모듈 사용을 위해 import winning_num = str(randint(0,99)) #0~99까지의 난수생성 (2자리수) -> 문자열 slice를 위해 미리 string 으로 변환 num = input("복권번호를 입력하시오(0에서 99사이)") #문제 조건은 2자리 정수..? print(F"당첨번호는 {winning_num} 입니다.") if(winning_num == num): #복권번호 2자리 모두 일치시 print("상금은 100만원 입니다.") elif((winning_num[0] == num[0]) or (winning_num[0] == num[1]) or (winning_num[1] == num[0]) or (winning_num[1] == num[1])): #복권번호 2자리중 하나라도 일치 print("상금은 50만원 입니다.") else: #일치하는게 하나도없으면 print("상금은 없습니다.") #연습문제 08 import turtle as t import math t.shape("turtle") t.reset() #좌표를 콤마(,) 로 구분해 받는다. -> map 으로 string을 int로 각각 변환한다. x1,y1 = map(int , input("첫번째 원에 대한 중심 좌표 입력 (형식) : x,y : ").split(',')) r1 = int(input("첫번째 원에 대한 크기(반지름) 입력 : ")) x2,y2 = map(int , input("두번째 원에 대한 중심 좌표 입력 (형식) : x,y : ").split(',')) r2 = int(input("두번째 원에 대한 크기(반지름) 입력 : ")) d = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) #두 점 사이의 거리 구하기 #print(d) #Turtle은 기본적으로 원을 그릴때 중심에서 그리지 않고 그 자리에서 위로 그린다. #즉 중심좌표에 그리고 싶다면 y좌표는 이동좌표에서 반지름을 뺀 값만큼 그려야한다.' #원 그리기 (1) t.pu() t.goto(x1, y1-r1) t.pd() t.circle(r1) #원 그리기 (2) t.pu() t.goto(x2, y2-r2) t.pd() t.circle(r2) #두원의 위치 상태 구하기 (두번째 원이 작은원이라 가정됨.) if (r1-r2) > d : t.write("두번째 원이 첫번째 원의 내부에 있습니다.") elif (r1-r2) == d or (r1+r2) == d : t.write("두번째 원이 첫번째 원과 겹칩니다.") elif (r1-r2) < d and (r1+r2) > d : t.write("두번째 원과 첫번째 원이 두점에서 만납니다.") else : t.write("두번째 원이 첫번째 원과 겹치지 않습니다.") #연습문제 01 #if문 미사용 버전 result = 0 for i in range(2,101,2): print(i, end=' ') result += i print() #줄바꿈용 print() print(F"1~100사이의 짝수 총합 : {result}") #if문 사용버전 result = 0 for i in range(1,101): if(i % 2 == 0): #2로 나눴을때 나머지가 0이라면 (짝수라면) print(i, end = ' ') #출력한다. result += i #효율을 위해 반복과정중에 덧셈을 처리한다. (더 빠르게 처리할려면 가우스의 덧셈공식 이용한다.) print() print() print(F"1~100사이의 짝수 총합 : {result}") #연습문제 06 import random n1 = random.randint(1,6) #1~6의 난수생성 (주의 : 6도 포함됨) n2 = random.randint(1,6) print(F"첫번째 주사위= {n1} 두번째 주사위= {n2}") #연습문제 05 n1 = int(input("정수를 입력하시오(종료:0) : ")) result = n1 #방금전에 입력한 정수 반영 while (n1 != 0): #n1이 0이 아닐때(다를때) 반복 n1 = int(input("정수를 입력하시오(종료:0) : ")) result += n1 print("합은", result, "입니다.") #연습문제 07 #눈 모양 한쪽 그리기 import turtle as t t.shape("turtle") t.reset() length = 30 #눈 모양 끝부분 길이 지정 t.left(90) #위를 바라보게한다 for i in range(1,7): #6번반복 t.forward(100) t.right(180) t.forward(length) t.left(120) t.forward(length) t.left(180) t.forward(length) t.right(120) t.left(60) t.forward(length) t.left(180) t.forward(length) t.right(60) t.forward(100 - length) t.left(120) # 추가문제 01 a = int(input("a : ")) b = int(input("b : ")) c = int(input("c : ")) d = int(input("d : ")) mx = 0 #최대값 변수 선언 if(a > mx): #a가 최대값보다 크다면 mx = a #최대값은 a값 if(b > mx): #elif를 사용하면 a > mx 가 True일경우 밑 블럭이 실행되고 프로그램이 끝나버린다. if를 사용해야한다. mx = b if(c > mx): mx = c if(d > mx): mx = d print(mx) # 추가문제 02 n1 = input("임의의 정수 입력 : ") print("역순 출력 :") for i in range(1, len(n1) + 1): print(int(n1[-i]), end = ' ') # 추가문제 04 for i in range(1, 9): if(i % 2 == 0): #짝수면 for j in range(1, i + 1): #그 수만큼 곱해준다. print(F"{i} * {j} = {i*j}") else: #홀수면 continue #넘어간다 if( i > 8): #8단을 넘어가면 Break break #------------------------------------ 4일차 #추가문제 05 n1 = int(input("임의의 정수(1~9) 입력 : ")) string = '' for i in range(1, n1+1): #print(i) string += str(i) print(int(string)) #출력하는 문자형태는 정수다. #추가문제 06 n1 = int(input("임의의 정수(1~9) 입력 : ")) string = '' for i in range(1, n1+1): #print(i) string += str(i) print(string + '*' * (n1 - i)) #출력하는 문자형태는 정수다. #연습문제 07 PI = 3.1415926538979 #PI 전역변수 지정 #r = 반지름 def get_circle_area(r): #원의 둘레 구하는 함수 global PI #밖의 전역변수를 사용하기 위해 global 선언해준다. return ((r ** 2) * PI) def get_circle_circum(r): #원의 면적 구하는 함수 global PI return (2 * PI * r) rad = 5 cir = get_circle_circum(rad) area = get_circle_area(rad) print(F"반지름이 5인 원의 면적: {area}") print(F"반지름이 5인 원의 둘레: {cir}") # 연습문제 08 # 참고 : 함수 내부의 인자값(변수)은 함수내부에서만 사용된다. def add(a,b): return a+b def sub(a,b): return a-b def multiply(a,b): return a * b def devide(a,b): return a / b print("사칙연산 : 임의의 두 정수를 입력하시오...") x = int(input("첫 번째 정수(x) : ")) y = int(input("두 번째 정수(y) : ")) print(F"{x} + {y} = {add(x,y)}") print(F"{x} - {y} = {sub(x,y)}") print(F"{x} * {y} = {multiply(x,y)}") print(F"{x} / {y} = {devide(x,y)}") #추가문제 01 def SUM(a,b,c): return a+b+c def AVE(a,b,c): return (a+b+c) / 3 def GRADE(score): if(score >= 90): return "A" elif(score >= 80): return "B" elif(score >= 70): return "C" elif(score >= 60): return "D" elif(score <= 59): return "F" print("세 과목의 점수를 입력 하세요 : ") n1 = int(input("국어 : ")) n2 = int(input("영어 : ")) n3 = int(input("수학 : ")) full_score = SUM(n1,n2,n3) average = AVE(n1,n2,n3) grade = GRADE(average) print(F"총점 : {full_score}, 평균 : {average}, 학점 : {grade}") # 추가문제 02,03 dic = {1:1, 2:1} #첫번째항 1, 두번째항 1은 정해져있음. #메모이제이션을 이용한 풀이 (문제에서 출력을 30까지 넣으나 재귀함수에 의한 반복호출로 프로그램이 뻗어버림) def fibo(n): if n in dic: #저장되어있으면 저장값을 return 한다. return dic[n] dic[n] = fibo(n-1) + fibo(n-2) #피보나치 계산값을 저장한다. return dic[n] print("### 피보나치 수열 구하기 ###") print() n1 = int(input("몇 번째 수열까지 출력할까요 : ")) space = len(str(fibo(n1))) #공간 확보를 위해 마지막항 글자수 계산하기 for i in range(1,n1+1): #마지막항 글자수가 8개인경우 #==> %10d로 공간확보함. print(F"%{space + 2}d" % fibo(i), end = '') if(i % 5 == 0): #5줄마다 개행하기. print() #메모이제이션 없이 풀이 (30항까진 계산가능하나 그 이상부턴 느리거나 뻗어버림.) def fibo(n): if n <= 2: return n else: return fibo(n-1) + fibo(n-2) print("### 피보나치 수열 구하기 ###") print() n1 = int(input("몇 번째 수열까지 출력할까요 : ")) space = len(str(fibo(n1))) #공간 확보를 위해 마지막항 글자수 계산하기 for i in range(1,n1+1): #마지막항 글자수가 8개인경우 #==> %10d로 공간확보함. print(F"%{space + 2}d" % fibo(i), end = '') if(i % 5 == 0): #5줄마다 개행하기. print() #------------------------------------ 5일차 # 연습문제 01 n1 = int(input("정수를 입력하시오: ")) n2 = int(input("정수를 입력하시오: ")) n3 = int(input("정수를 입력하시오: ")) n4 = int(input("정수를 입력하시오: ")) n5 = int(input("정수를 입력하시오: ")) lst = [] lst.append(n1) lst.append(n2) lst.append(n3) lst.append(n4) lst.append(n5) total = sum(lst) print(F"총점 {total}, 평균 {total/len(lst)}") #연습문제 02 import random rnd_lst = [] for i in range(1,1001): #총 1000회 반복 rnd = random.randint(1,6) #1~6까지의 난수 추출 rnd_lst.append(rnd) #리스트에 저장 #리스트명.count(n) 해당 리스트에 n이라는 숫자가 몇개있는지 #return하는 Method이다. rnd_count = [rnd_lst.count(i) for i in range(1,7)] #리스트에서 1~6까지의 빈도수를 저장한다. for i in range(len(rnd_count)): print(F"주사위가 {i+1} 인 경우는 {rnd_count[i]}번") #연습문제 07 #도메인 약자 딕셔너리 dic = {"kr":"대한민국", "us":"미국", "jp":"일본", "de":"독일", "sk":"슬로바키아", "hu":"헝가리", "no":"노르웨이"} for domain, national in dic.items(): print (F"{domain} : {national}") #연습문제 03 #입력 모드 -------------- telephone = {} #전화번호부 (key = 이름, value = 전화번호) while (True): name = input("[입력모드] 이름 : ") if(name.strip() == ""): #이름이 입력안되면 break #반복문 강제종료 phone_num = input("전화번호 : ") telephone[name] = phone_num #방금 입력한것 추가 #검색 모드 -------------- while (True): name = input("[검색모드] 이름 : ") if(name.strip() == ""): #검색이 입력안되면 break #반복문 강제종료 try: phone = telephone[name] print(F"{name}의 전화번호는 {phone} 입니다. ") #전화번호 출력 except: print("찾을 수 없거나 오류가 발생했습니다.") #연습문제 08 def make_problem(question, correct_answer): #문제와 정답값을 입력으로 받는다. print(question) print("(1) 파이썬 (2) 변수 (3) 함수 (4) 리스트") answer_paper = {"파이썬": 0, "변수":0, "함수":0, "리스트":0 } #정답지 생성 answer_paper[correct_answer] = 1 #방금 받은 정답값을 1로 정한다. txt = input("입력 : ") if(answer_paper[txt]): #answer_paper에서 꺼낸값이 True(1) 일경우 print("정답입니다!!!") print() else: print("아쉽게도 정답이 아닙니다 ㅠ") make_problem("최근에 가장 떠오르는 프로그래밍 언어는? ", "파이썬") make_problem("데이터를 저장하는 메모리 공간", "변수") ques = '다음은 어떤 단어에 대한 설명일까요?\n\n"작업을 수행하는 문장들의 집합에 이름을 붙인것"' make_problem(ques, "함수") #연습문제 04 import turtle as t import random def draw_square(): for i in range(1,5): t.forward(100) t.left(90) def color_fill(color): t.fillcolor(color) t.begin_fill() draw_square() t.end_fill() def move_target_pos(x,y): t.penup() t.goto(x,y) t.pendown() color = ["yellow", "red", "purple", "blue"] t.shape("turtle") t.reset() for c in color: #랜덤 좌표값 생성 rnd_x = random.randint(-100, 0) rnd_y = random.randint(0, 100) move_target_pos(rnd_x, rnd_y) color_fill(c) #연습문제 05 import turtle as t import random def draw_n_square(angle): for i in range(1,angle + 1): t.forward(100) t.left(360 / angle) def color_fill(color): t.fillcolor(color) t.begin_fill() rnd = random.randint(3,8) draw_n_square(rnd) t.end_fill() def move_target_pos(x,y): t.penup() t.goto(x,y) t.pendown() color = ["yellow", "red", "blue", "skyblue", "orange", "green"] t.shape("turtle") t.reset() for c in color: #랜덤 좌표값 생성 rnd_x = random.randint(-200, 0) rnd_y = random.randint(0, 200) move_target_pos(rnd_x, rnd_y) color_fill(c) #------------------------------------ 전문항 풀이완료.
[Python] 문제 풀이 코드 저장용
'프로그래밍 > Python' 카테고리의 다른 글
COMMENT WRITE