데이터 분석/Python

[실습] 흐름 제어문의 활용 - 풀이와 오답노트

toraa 2025. 1. 6. 22:31

[실습1] 구구단 19단 출력하기

19 X 1 = 19

19 X 2 = 38 ...

 

<내 코드>

for i in range(1,20):
    result = 19*i
    print(f'{19}x{i} = {result}') 

<풀이>

for i in range(1,20):
    print(f'{19}x{i} = {19*1}') 

▶ result로 정의하지 않고 바로 {19*1} 식을 넣으면 더 간단해짐!

 

 

[실습2] 아래의 숫자 리스트 nums 에서 10 이상인 숫자만 따로 모아 합계 계산하기 nums = [9, 10, 4, 22, 3, 19]

<내코드>

nums = [9, 10, 4, 22, 3, 19]

sums = 0
for i in nums :
    if i>=10 :
        sums += i
        print(sums)

<풀이>

nums = [9, 10, 4, 22, 3, 19]

sums = 0
for i in nums :
    if i>=10 :
        sums += i
sums

나는 반복문 안에서 print(sums)를 넣었는데, 반복문이 끝난 후에 출력이 되도록 해야 합계가 계산되었다.

print함수를 따로 쓰지 않고, sums만 써도 출력됨.

내 결과:
10
32
51

풀이 결과: 51

 

 

[실습3] 다음 리스트에 있는 숫자의 누적 합을 출력하세요. 단 *가 나오면 건너뛰고 - 가 나오면 반복을 중지

<내 코드>

nums2 = [1, 2, '*', 4, 5, '*', 7, '-', 9]
sums = 0

for i in nums2 :

    if i == '*':
        continue
    elif i == '-':
        break
    elif (i,int):
        sums += i
        print(sums)

<풀이>

sums = 0

for i in nums2 :

    if i == '*':
        continue
    if i == '-':
        break
        sums += i
        print(sums)

나는 elif를 사용했는데, if문 만으로 구성한 풀이도 가능

 

결과:
1
3
7
12
19

 

[실습4] 다음 리스트 안에 입력된 이름으로 Customer 인스턴스를 생성하세요. 이때 for문 안에서 Customer 인스턴스가 생성되고 고객 번호는 1씩 증가하는 순서입니다.

<내코드>

names = ['김입금','나은행','최대출','신한나','국민협']

customers = []

for i, name in enumerate(names, start=1):
    customers.append(Customer(name, i))

for customer in customers:
    print(f"Customer ID: {customer.c_id}, Name: {customer.name}, Amount: {customer.get_amount()}")

<풀이>

names = ['김입금','나은행','최대출','신한나','국민협']

for i, n in enumerate(names):   #n에 이름이 들어감
c=Customer(n,i)
print(c.name)
내 결과:
Customer ID: 1, Name: 김입금, Amount: 0
Customer ID: 2, Name: 나은행, Amount: 0
Customer ID: 3, Name: 최대출, Amount: 0
Customer ID: 4, Name: 신한나, Amount: 0
Customer ID: 5, Name: 국민협, Amount: 0
풀이 결과:
김입금
나은행
최대출
신한나
국민협

 

[실습5] for문을 두번 중첩하여 1~47번중 6개의 번호를 뽑는 로또 번호를 5개 생성하여 출력하세요 (숫자 중복 상관없음)

random 모듈

random 모듈의 randint() 함수를 활용하여 랜덤 숫자 생성

randint(s,e): s~e 사이의 랜덤한 수 생성

<내 코드>

import random

for i in range(5):
    lotto_numbers = []
    for j in range(6):
        number = random.randint(1, 47)
        lotto_numbers.append(number)
    print(f"{i+1}번째 로또 번호: {lotto_numbers}")

<풀이>

import random

for i in range(5):
	print('----')
	for j in range(6):
		pick = random.radint(1,47)
		print(pick)
내 결과 :
1번째 로또 번호: [35, 42, 44, 26, 30, 14]
2번째 로또 번호: [13, 18, 43, 13, 10, 35]
3번째 로또 번호: [16, 31, 46, 42, 28, 45]
4번째 로또 번호: [31, 46, 10, 45, 40, 42]
5번째 로또 번호: [30, 32, 10, 31, 43, 23]

풀이 결과:
35
42
44
26
30
14
----
18
13
43
13
10
35
----
...

  이건 내가 리스트에 넣어서 더 보기 깔끔하게 결과가 출력된 것 같다!