
예제 풀이를 진행하며 가능한 점프 투 파이썬에서 제시한 답안을 보지 않으려 합니다. 구글링도 좋고 오픈 북도 좋으나 제시된 답안을 보게 된다면 너무 빨리 생각이 막히고 코딩함에 있어 자유도가 닫힌다고나 할까요? 산으로 가든 바다로 가든 우선 제 생각대로 풀어봅니다. 파이썬과 같이 프로그래밍 언어를 학습하는 단계에서는 자신만의 코드를 직접 짜보고, 실행하며, 오류도 경험해 보며 내가 무엇을 잘못 이해하고 있는지 또는 같은 문제를 어떻게 풀어갈지에 대한 경험치가 쌓일 것입니다.
코딩에는 딱 이거다!라는 정답이 있을 수 없습니다. 다소 시간이 걸리더라도 자신만의 방식을 적용해 보며 생각의 힘을 키우시길 권장합니다. (잇몸이 건강해야 이가 탄탄^^ 뜬금없네요! ㅋ)
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() 함수를 제대로 사용 못 했네요. 좀 더 간결한 코딩을 위해 더 열공해야겠습니다.
오늘 모든 문제를 마무리하고 싶었으나, 맨 마지막 문제가 정규 표현식이라 시간이 좀 필요합니다. 한참 들여다봐야겠습니다.
'코딩 이야기 > 파이썬(Python)' 카테고리의 다른 글
파이썬(Python) – 초보 탈출 예제 풀이 (2/2) (0) | 2021.12.17 |
---|---|
파이썬(Python) – 초보 탈출 예제 풀이 (1/2) (0) | 2021.12.17 |
단도직입 파이썬(Python) – 파이썬 스크립트를 실행파일로 변환하기 (로또번호 생성 후 과거 자료와 비교하기) (0) | 2021.12.17 |
단도직입 파이썬(Python) – 정규식(Regular Expression) 2/2 (0) | 2021.12.17 |
단도직입 파이썬(Python) – 정규식(Regular Expression) 1/2 (0) | 2021.12.17 |
댓글