result = 0 try: [1,2,3][3] "a"+1 4 / 0 except TypeError: result +=1 except ZeroDivisionError: result +=2 except IndexError: result +=3 finally: result += 4 print(result)
코드 실행결과 result 값은 7이 나온다.
그 이유는처음 result 값은 0으로 초기화되고,
try문 첫번째 실행문 [1,2,3][3]에서 에러가 발생해
exception IndexError로 이동해 result 값에 3이 더해지며
이후 finally 문이 실행돼 4가 더해지므로
result값은 7이된다.
⑬ DashInsert함수 (for문, if문, 리스트 사용)
- DashInsert함수는 숫자로 구성된 문자열을 입력받은 뒤
문자열 안에서 홀수가 연속되면 두 수 사이에 -를 추가하고, 짝수가 연속되면 *를 추가하는 기능을 갖고 있다.
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))
⑭ 문자열 압축하기
- 문자열을 입력받아 같은 문자가 연속적으로 반복되는 경우, 그 반복 횟수를 표시해 문자열을 압축하여 표시하시오.
- 입력 문자열의 문자를 확인해 동일한 문자가 들어올 경우, 해당 문자의 숫자 값을 증가시킨다.
다른 문자가 들어올 경우 해당 문자 숫자값을 1로 초기화한다.
⑮ Duplicate Numbers
0~9의 문자로 된 숫자를 입력받았을 때,
이 입력값이 0~9의 모든 숫자를 각각 한 번씩만 사용한 것인지 확인하는 함수
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"))
16) 모스부호 해독
- 딕셔너리로 모두 작성한 후 그 결괏값을 도출함 -딕셔너리 연습
17) 기초 메타 문자
- 정규식 a[.]{3,}b과 매치되는 문자열은? -정규식 복습
(a....b)
18) 문자열 검색 (코드의 결괏값 예측하기)
import re
p = re.compile("[a-z]+")
m = p.search("5 python")
m.start() + m.end()
- m은 python가 매치될 것이므로, m.start()는 python의 첫번째 인덱스 2, end는 마지막 index 8을 도출해 답은 10이된다.
data = """ park 800905-1049118 kim 700905-1059119 """ result = []
for line in data.split("\n"): word_result = [] for word in line.split(" "): if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit(): word = word[:6] + "-" + "*******" word_result.append(word) result.append(" ".join(word_result))