본문 바로가기
Python/python 기초

파이썬 리뷰

by winston1214 2020. 7. 3.
반응형

http://www.yes24.com/Product/Goods/89141599

 

파이썬으로 쉽게 풀어쓴 자료구조

입문자들이 보다 쉽고 재미있게 자료구조를 공부하고 다양한 문제 해결에 활용할 수 있는 능력을 기르는데 초점을 맞추어 구성한 책이다. 지루하지 않고 내용을 보다 쉽게 이해할 수 있도록 적�

www.yes24.com

이 책의 답지가 없으므로 이 책의 실습 문제를 선택적으로 풀어보겠다.

데이터 분석과는 크게 상관없는 것 같지만 자료구조는 프로그래밍의 기본이므로 하는 것이 좋다고 판단하여 이 책을 공부하였다.

사실 자료구조는 C로 수업을 들어서 이미 알고 있었는데 파이썬으로 구현하면 어떤 변화가 있을까라는 생각에 이 책을 구매하게 되었다. 지금까지 공부한 바로는 다른 언어에 비해 파이썬은 엄청나게 쉬운 언어임을 다시금 느끼게 되었다.

일단 첫번째 파트인 파이썬 리뷰의 실전문제의 일부분을 풀어보겠다.

1번 문제

책에 오타가 있어 약간 수정을 하였다. 마지막 예시 부분에서 1200*6%+800*15%이다.

이에 대한 답은

r= int(input("소득(만원단위 입력) : "))
a=1200*0.06
b=3400*0.15
c=4200*0.24
d=6200*0.35
if r>15000:
    print("세금은: ",a+b+c+d+(r-15000)*0.38)
elif r>8800:
    print("세금은: ",a+b+c+(r-8800)*0.35)
elif r>4600:
    print("세금은: ",a+b+(r-4600)*0.24)
elif r>1200:
    print("세금은: ",a+(r-1200)*0.15)
else:
    print("세금은: ",r*0.06)

이렇게 구현된다.

b 변수에서 3400*0.15라고 계산한 이유는 이미 1200 부분이 계산되었기 때문에 중복 계산을 방지하기 위해 최대값에서 1200을 빼준 것이다. 나머지도 마찬가지 이유로 계산된다.

 

 

2번 문제

import random
answer = random.randint(10,99)
guess = int(input("숫자를 입력하시오(두자리수): "))
for i in range(10):
    if answer<guess:
        print("아닙니다 더 작은 숫자입니다")
        guess = int(input("숫자를 입력하시오(두자리수): "))
    if answer>guess:
        print("아닙니다 더 큰 숫자입니다")
        guess = int(input("숫자를 입력하시오(두자리수): "))
    else:
        break
print("정답입니다. {}번 만에 숫자 {}를 맞추셨습니다.".format(i+1,answer))

random 함수로 정답값을 주어 맞추는 프로그램으로 작성하였다.

위 프로그램은 간단하므로 다른 부가 설명은 하지 않겠다.

3번

이 문제는 매우....힘들었던 문제이다. 이 문제에 도움을 준 단국대 응용컴퓨터학과 16학번 황모씨에게 감사함을 느낀다.(나는 단국대가 아니다.)

h = int(input("피라미드의 높이를 입력하세요: "))
for i in range(h):
    print(" " * (2*(h - i)-1), end=" ")
    for j in range(i+1):
        print(2 * j + 1, end=" ")
    for j in range(i, 0, -1):
        print(2*j - 1, end=' ')
    print("\n")

피라미드의 높이를 받은 후 for 문을 돌린 후 가운데 정렬하기 위해 공백을 튜닝하였다. 또한 1 131 13531 로 만들기 위해 짝수+1, 짝수-1 을 받는 코드를 작성하였다.

5번

4번문제는 3번문제와 유사한 형식이므로 스킵하고 5번 문제로 넘어갔다.

사실 나는 class 사용이 익숙치가 않아 완벽하지 못한 코드를 짰다. 그러므로 참고만 할 뿐 너무 맹신하지 말았으면 좋겠다.

class Bag:
    def __init__(self,ls=[],string=''):
        self.ls = []
        self.string=''
    def insert(self,string):
        self.ls.append(string)
    def remove(self,string):
        self.ls.remove(string)
    def bag(self):
        return self.ls

Bag라는 클래스를 이와 같이 코딩하였다. 컴퓨터 전공자가 보면 우스운 코드일 수도 있다..

이 문제를 보면서 코딩 실력을 더 늘려야겠다는 다짐을 많이 하였다.

결과 코드는

mybag = Bag()
mybag.insert("휴대폰")
mybag.insert("지갑")
mybag.insert("손수건")
mybag.insert("빗")
mybag.insert("자료구조")
mybag.insert("야구공")
print("내 가방 속의 물건 :",mybag.bag())
mybag.insert("빗")
mybag.remove("손수건")
print("내 가방 속의 물건 :",mybag.bag())

위 코드의 출력값

그래도 답은 잘 나왔긴했다..!!

 

부족한 코딩 실력임을 다시금 깨닫는 문제들이었다..

 

※ 혹시 이 책의 답을 찾기 위해 들어온 분이 있다면 참고만 할 뿐 너무 맹신하지 말았으면 좋겠습니다. 완벽하지 않고 이쁜 코드는 아닙니다..

반응형

'Python > python 기초' 카테고리의 다른 글

Pandas를 활용한 영화 평점 분석  (0) 2020.08.25
Pandas를 이용한 NC 다이노스 선수 분석  (0) 2020.03.05
Pandas - 3  (0) 2020.02.23
Pandas - 2  (0) 2020.02.02
Pandas - 1  (0) 2020.01.31

댓글