공부/파이썬

[점프 투 파이썬] - 파이썬 초보 탈출 (11 ~ 15)

2월2 2023. 7. 16. 23:06

Q11.

나의 코드 : 

import sys

 

정답 : 

1. sys 모듈

import sys
sys.path.append("c:/doit")
import mymod

 

2. PYTHONPATH 환경 변수 사용하기

>set PYTHONPATH=c:\doit
>python
>>>import mymod

 

3. 현재 디렉터리 사용하기

>cd c:\doit
>python
>>>import mymod

 

 


 

Q12.

나의 풀이 : 

7이 출력될 것이다.

[1, 2, 3][3]으로 인해 IndexError가 일어나 +3이 되고,

finallu로 +4가 되어 7이 된다.

 

정답 : 

  1. result의 초깃값은 0이다.
  2. try문 안의 [1, 2, 3,][3] 이라는 문장 수행 시 IndexError가 발생하여 except IndexError 구문으로 이동하게 되어 result에 3이 더해져 3이 된다.
  3. 최종적으로 finally 구문이 실행되어 result에 4가 더해져 7이 된다.
  4. print(result) 가 수행되어 result의 최종 값인 7이 출력된다.

 

 


 

Q13.

나의 코드 : 

#arr = input()
arr = "4546793"

oriStr = list(map(int, arr))
newStr = []


for i, n in enumerate(oriStr):
    tmp = str(n)
    newStr.append(tmp)
    if i < len(oriStr) - 1:
        if n % 2 == 1:
            odd = 1
        else:
            odd = 0
        if oriStr[i + 1] % 2 == 1:
            nOdd = 1
        else:
            nOdd = 0
        if odd == 1 and nOdd == 1:
            newStr.append("-")
        if odd == 0 and nOdd == 0:
            newStr.append("*")

print("".join(newStr))

계속 시도해봐도 잘 안풀려서 정답을 본 후 다시 풀어보았다.

 

정답 : 

data = "4546793"

numbers = list(map(int, data))
result = []

for i, num in enumerate(numbers):
    result.append(str(num))
    if i < len(numbers) - 1:
        is_odd = num % 2 == 1
        is_next_odd = numbers[i+1] % 2 == 1
        if is_odd and is_next_odd:
            result.append("-")
        elif not is_odd and not is_next_odd:
            result.append("*")

print("".join(result))

 

 


 

Q14.

나의 코드 : 

arr = "aaabbcccccca"
nArr = []

before = arr[0]
cnt = 0
for a in arr:
    if before != a:
        nArr.append(before)
        nArr.append(str(cnt))
        before = a
        cnt = 1
    else:
        cnt += 1

nArr.append(a)
nArr.append(str(cnt))

print("".join(nArr))

 

정답 : 

def compress_string(s):
    _c = ""
    cnt = 0
    result = ""
    for c in s:
        if c!=_c:
            _c = c
            if cnt: result += str(cnt)
            result += c
            cnt = 1
        else:
            cnt += 1
    if cnt: result += str(cnt)
    return result

print(compress_string("aaabbcccccca"))

 

 


 

Q15.

나의 코드 : 

def dupNum(arr):
    nArr = []

    for a in arr:
        if a not in nArr:
            nArr.append(a)
        else:
            return False

    return True

print(dupNum("0123456789"))
print(dupNum("01234"))
print(dupNum("01234567890"))
print(dupNum("6789012345"))
print(dupNum("012322456789"))

계속 시도해봐도 잘 안풀려서 정답을 본 후 다시 풀어보았다.

 

정답 : 

def chkDupNum(s):
    result = []
    for num in s:
        if num not in result:
            result.append(num)
        else:
            return False
    return len(result) == 10

print(chkDupNum("0123456789"))
print(chkDupNum("01234"))
print(chkDupNum("01234567890"))
print(chkDupNum("6789012345"))
print(chkDupNum("012322456789"))