따라하며 배우는 파이썬과 데이터과학/심화문제

따라하며 배우는 파이썬과 데이터과학 Ch.07 심화문제

은행털이 2023. 10. 19. 06:21

7.2

list1 = [3, 5, 7]
list2 = [2, 3, 4, 5, 6]

for i in list1:
    for j in list2:
        print(f"{i} * {j} = {i * j}")
    print()

 

7.3

list1 = ["I like", "I love"]
list2 = ["pancakes.", "kiwi juice.", "espresso."]

for i in list1:
    for j in list2:
        print(i, j)

 

7.4

t = (10, 20, 30, 40)
t.append(50) 
t.remove(40) # 튜플에는 append, remove 속성이 없으며 리스트에만 존재함
t[0] = 0 # 튜플은 값을 변경할 수 없음

 

7.5

tuple1 = ('A', 'B', 'C')
tuple2 = (1, 2)

result_list = []
for i in tuple1:
    for j in tuple2:
        result_list.append(i+str(j))

print(result_list)

 

7.6

s = input("문자열을 입력하세요 : ")

for i in range(len(s) + 1):
    print(s[:i])
for i in range(1, len(s)):
    print(s[:-i])

 

7.7 (1)

fruit_list = ["banana", "orange", "kiwi", "apple", "melon"]

longest_number = len(max(fruit_list, key=len))
longest_fruit_list =  [i for i in fruit_list if len(i) == longest_number]

print("가장 길이가 긴 문자열 :", end='')
for i in longest_fruit_list:
    print(f"{i}", end=', ')
print()

fruit_list = [i for i in fruit_list if i not in longest_fruit_list]
print(fruit_list)

 

7.7 (2)

fruit_list = ["banana", "orange", "kiwi", "apple", "melon"]

for i in fruit_list:
    print(f"{i} : 문자열의 길이 {len(i)}")

 

7.8

만들다보니 인덱스슬라이싱은 사용하지 않았다. 인덱스 슬라이싱으로 구현할 수 있으면 해보는 것도 좋을 것 같다.

n = int(input("n을 입력하시오 : "))

matrix = [[i * n + j + 1 for j in range(n)] for i in range(n)]

for i in range(n):
    if i % 2 == 0:
        for j in range(n):
            print("{:2d}".format(matrix[i][j]), end=' ')
    else:
        for j in range(n-1, -1, -1):
            print("{:2d}".format(matrix[i][j]), end=' ')
    print()

 

7.9

def overlap(a, b):
    max_overlap = min(len(a), len(b))
    for i in range(max_overlap, 0, -1):
        if a[-i:] == b[:i]:
            return a + b[i:]
    return a + b

print(overlap("commu", "mummy"))
print(overlap("boxok", "xbox"))
print(overlap("deter", "detery"))
print(overlap("waycom", "ycomget"))
print(overlap("tttttt", "tttttt"))