본문 바로가기
코딩 이야기/파이썬(Python)

파이썬(Python) – 초보 탈출 예제 풀이 (1.5/2)

by 아재코더 2021. 12. 17.
파이썬 - 예제풀이

예제 풀이를 진행하며 가능한 점프 투 파이썬에서 제시한 답안을 보지 않으려 합니다. 구글링도 좋고 오픈 북도 좋으나 제시된 답안을 보게 된다면 너무 빨리 생각이 막히고 코딩함에 있어 자유도가 닫힌다고나 할까요? 산으로 가든 바다로 가든 우선 제 생각대로 풀어봅니다. 파이썬과 같이 프로그래밍 언어를 학습하는 단계에서는 자신만의 코드를 직접 짜보고, 실행하며, 오류도 경험해 보며 내가 무엇을 잘못 이해하고 있는지 또는 같은 문제를 어떻게 풀어갈지에 대한 경험치가 쌓일 것입니다.

​코딩에는 딱 이거다!라는 정답이 있을 수 없습니다. 다소 시간이 걸리더라도 자신만의 방식을 적용해 보며 생각의 힘을 키우시길 권장합니다. (잇몸이 건강해야 이가 탄탄^^ 뜬금없네요! ㅋ)

Q11. 특정한 모듈을 import 할 때 오류 없이 사용 가능한 방법을 모두 기술해 봅니다.

ex. import mymod

from mymod import *

from mymod import 함수명

import mymod로 모듈을 불러오게 되면 mymod.add(a, b) 또는 mymod.sub(a, b)처럼 사용해야 하며, from mymod import *를 하게 되면 add(a, b) 또는 sub(a, b) 형태로 함수를 사용할 수 있습니다.

​​

Q.12 아래 코딩 결과를 예상해 봅니다.

r=0

try:

[1,2,3][4]

"a"+1

4/0

except TypeError:r+=1

except ZeroDivisionError:r+=2

except IndexError:r+=3

finally:r+=4

print(r)

try 수행문에서 어떤 에러가 발생하는냐에 따라 r 값이 바뀌게 됩니다. 제 예상대로 7이 출력됩니다.

(별거 아닌데 갑자기 뿌듯해집니다.)

​​

Q13. Dashinsert 함수는 숫자로 구성된 문자열을 입력받은 뒤 홀수가 연속이면 하이픈( - ), 짝수가 연속이면 아스테 리크( * )를 추가합니다. Dashinsert 함수를 작성해 봅니다.

입력 : 4546793

출력 : 454*67-9-3

 

def dashinsert(num):

num = list(map(int, num))

cnt = 1

while True:

if (num[cnt-1]+num[cnt]) % 2 == 0 :

if num[cnt] % 2 == 0 :num.insert(cnt,'*')

else : num.insert(cnt,'-')

cnt+=1

if len(num)-1 <= cnt: break

cnt+=1

return num

 

a=input()

num = dashinsert(a)

[print (i, end='') for i in num]

쉽게 생각하고 코딩 시작했는데… ㅠㅠ 몇 가닥 남지 않은 머리카락이 걱정됩니다.

 

Q14. 문자열을 입력받아 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시해 문자열을 압축 표시해 봅니다.

입력 : aaabbcccccca

출력 : a3b2c6a1

 

raw_str=input()

list_str=list(raw_str)

pack_str=[]

cnt=1

str_len=len(list_str)-1

 

while str_len > 0:

a=list_str.pop(0)

if a == list_str[0] :

cnt +=1

else :

pack_str.append(a)

pack_str.append(cnt)

cnt=1

 

str_len-=1

pack_str.append(a)

pack_str.append(cnt)

 

[print(i, end='') for i in pack_str]

쉽지 않습니다. 하지만 풀었습니다.

 

Q15. 0~9의 문자로 된 숫자를 입력받았을 때, 이 입력값이 0~9의 모든 숫자를 각각 1번씩만 사용한 것인지 확인하는 함수를 작성해 봅니다.

​비교적 간단하게 풀었습니다. 출제자 의도는 이게 아닌 것 같지만! 전반적으로 join() 함수를 제대로 사용 못 했네요. 좀 더 간결한 코딩을 위해 더 열공해야겠습니다.

오늘 모든 문제를 마무리하고 싶었으나, 맨 마지막 문제가 정규 표현식이라 시간이 좀 필요합니다. 한참 들여다봐야겠습니다.

댓글