python 문제풀이 복습 : 반복문

STUDY_J·2024년 7월 21일

파이썬 문제풀이

목록 보기
3/9

문제

주사위에서 나올 수 있는 범위인 1~6사이의 정수 5개를 무작위로 출력하는 코드를 작성하세요. 중복되는 숫자가 있는지 세어보세요.

손코딩

1) 무작위 출력이므로 import random을 사용해야함
2) 중복되는 숫자를 세어야하므로 임의로 뽑힌 5개의 정수를 우선 리스트에 포함시킨다
3) 중복되는 숫자를 "in"을 사용해서 찾고, 그 숫자가 몇 번 반복되는지 "count"를 사용해서 나타보고자 함

import random

# 1~6 사이의 정수 5개를 무작위로 출력해야 한다
# list(map(int, input().split())) 사용하여 뽑힌 숫자들이 바로 리스트에 저장되도록 한다
# => 랜덤 숫자를 뽑아야되므로, input()을 사용할 수 없다

rand_num_list= []

for _ in range(5):

    num = random.randint(1,6)
    rand_num_list.append(num) #랜덤으로 뽑힌 숫자를 리스트에 추가

dup_nums = [] #중복되는 숫자 담으려는 리스트
dup_count = [] #중복되는 숫자가 몇 번 반복되는지
count = 0

for num in rand_num_list: # 랜덤 숫자 5개로 구성된 숫자를 순회하며, 그 숫자가 중복되는지 판단하기
    if not num in dup_nums: #랜덤 숫자가 중복 리스트에 없다면 추가해주어야함
        dup_nums.append(num)
        dup_count.append(1) # 중복되는 숫자가 1개 생긴거이므로 1을 추가

    else: #리스트에 포함되어 있다면, 반복되는 숫자를 넣어준다.
        idx = dup_nums.index(num) # 중복 리스트에 몇 번째 인덱스를 가지는지 
        dup_count[idx] += 1 #중복 카운트에 1을 더해준다

print(f'랜덤 숫자 5개: {rand_num_list}')

for i in range(len(dup_count)):
    print(f'중복되는 숫자: {dup_nums[i]}, 반복 횟수: {dup_count[i]}')
    
'''
출력결과

랜덤 숫자 5개: [3, 4, 3, 6, 3]
중복되는 숫자: 3, 반복 횟수: 3
중복되는 숫자: 4, 반복 횟수: 1
중복되는 숫자: 6, 반복 횟수: 1
'''

코드를 단순화 할 수 있는 부분

  • 랜덤숫자 5개를 뽑아내서 리스트에 뽑는 코드를 나는 다음과 같이 작성했다.
rand_num_list= []

for _ in range(5):

    num = random.randint(1,6)
    rand_num_list.append(num) #랜덤으로 뽑힌 숫자를 리스트에 추가
    
print(rand_num_list) 

# [1, 6, 2, 6, 6]
  • 이 코드를 단순화하여 한 줄로 작성할 수 있다.
    for문을 사용할때 데이터를 리스트에 담는 방법을 한 줄로 나타내는 방법
    "리스트 컴프리헨션 (list comprehension)" 이라고 한다.
rand_num_list = [random.randint(1,6) for _ in range(5)]
print(rand_num_list)

# [5, 5, 3, 4, 3]

리스트 컴프리헨션 (list comprehension)이란?

  • 리스트 컴프리헨션 구조 설명
    리스트 컴프리헨션은 다음과 같은 구조를 가집니다
[expression for item in iterable]
  • expression : 리스트의 각 요소가 될 표현식입니다.
    for item in iterable: 반복문입니다.
    item은 각 반복에서의 요소를 나타내고, iterable은 반복 가능한 객체 (예: 리스트, 문자열, 범위 등)입니다.

예시코드 및 결과

string = "hello"
char_list = [char for char in string]
print(char_list) # ['h', 'e', 'l', 'l', 'o']
  • 그렇다면 위 예시코드에서 출력된 문자들을 포함한 리스트를 다시 문자열로 변환하고 싶다면 어떻게 할까?
    " join() " 메서드를 사용하면된다.
char_list = ['h', 'e', 'l', 'l', 'o']
string = ''.join(char_list)
print(string) # hello

0개의 댓글