본문 바로가기

Programming/Python

Do it! 공부단 10일차 | 문제 풀이 (2)

  • Q11에서부터 Q14까지의 문제를 풀었다.
  • 코드는 직접 작성하였으며 풀이와 다른 경우 표시를 해두었다.
  • 난이도는 책에서와 같이 ⭐로 표기했다(최대 3개).

 

Q11 모듈 사용 방법 ⭐⭐⭐

#Q11 모듈 사용 방법
#C:\Users\이동해\python-git\test 디렉터리에 mymod.py 모듈이 있을 때 cmd에서 모듈 사용하는 방법 모두 기술하기

'''
1) 모듈이 있는 test 디렉터리로 이동해서 사용하기
    1. #C:\Users\이동해\python-git\test 디렉터리로 이동
    2. python 명령어로 파이썬 셸 실행
    3. import mymod 명령어로 모듈 사용

2) sys.path.append(모듈 저장 경로) 사용하기
    1. 파이썬 셸 실행
    2. import sys 명령어로 sys 모듈 사용
    3. sys.path.append() 명령어로 모듈 디렉터리 경로 추가
    4. import mymod 명령어로 모듈 사용


3) PATHONPATH 환경 변수 사용하기
    1. set PYTHONPATH 명령어로 모듈 디렉터리 경로 입력
    2. 파이썬 셸 실행
    3. import mymod 명령어로 모듈 사용

    

 

Q12 오류와 예외처리 ⭐

#Q12 오류와 예외처리
#코드의 실행 결과를 예측하기

result = 0

try:
    [1, 2, 3][3]    #IndexError 에러 발생
    'a' + 1
    4 / 0
except TypeError:
    result += 1
except ZeroDivisionError:
    result += 2
except IndexError:  # result는 3 -> finally로 이동
    result += 3
finally:            # result는 7
    result += 4

print(result)

 

Q13 DashInsert 함수 ⭐⭐

#Q13 DashInsert 함수 만들기

def DashInsert(x):
    result = []
    for i in range(0,len(x)-1):
        result.append(x[i])

        if int(x[i])%2 == 0 and int(x[i+1])%2 == 0: #짝수가 연속되면 두 수 사이 * 추가
            result.append('*')
        
        elif int(x[i])%2 == 1 and int(x[i+1])%2 == 1: #홀수가 연속되면 두 수 사이 - 추가
            result.append('-')

        elif x[i+1] == False:
            pass
    result.append(x[-1])
    return ''.join(result)
            
x = input('숫자를 입력하세요: ')
result = DashInsert(x)
print(result)

  • 풀이에서는 map함수를 사용해 입력받은 숫자 문자열을 숫자 리스트로 변경한 후 시작했다.
  • 그리고 마지막에 x [-1]을 붙이지 않기 위해 조건문을 '다음 수가 있다면'으로 작성했다.

코드가 깔끔하지 않아 아쉽지만 기능을 구현한 것 자체로 뿌듯하다😭

 

Q14 문자열 압축하기 ⭐⭐

#Q14 문자열 압축하기

def StrCompress(s):
    s = list(s)
    num = 1
    result = []
    x = list(range(0,len(s)))
    
    for i,c in enumerate(x): #for문에서 변수 2개를 사용하기 위해 enumerate 사용
        result.append(s[i])        
        if c < len(s)-1:
            if s[c] == s[c+1]:
                num += 1
            elif s[c] != s[c+1]:
                result.append(str(num)) #리스트에 문자열이 아닌 자료형이 있으면 에러 발생
                num = 1
    result.append(str(num))
    return ''.join(result)

s = input('문자를 입력하세요: ')
result = StrCompress(s)
print(result)

  • Q13 풀이에서 힌트를 얻어 이번에는 enumerate 함수를 사용했다.
  • 풀이에서는 result를 리스트가 아닌 문자열로 두고 작성했다.

 

 

오늘 끝까지 풀줄 알았는데 생각보다 어렵다🤦‍♂️ 진정하고 내일 다시 해야지.


이 글은 책 『Do it! 점프 투 파이썬』을 읽은 후 작성한 글입니다.

 

Do it! 점프 투 파이썬

코딩을 처음 배우는 중·고등학생과 나만의 경쟁력을 갖추고 싶은 문과생, 소프트웨어 시대에 대비하여 새로운 스펙을 준비하려는 직장인까지! 모두 ‘점프 투 파이썬’으로 프로그래밍을 시작

www.easyspub.co.kr