Welcome! Everything is fine.

[4주차] Python 100 문제풀이 Part.3 - 모듈 본문

자격증 및 기타 활동/여름방학 스터디(Python)

[4주차] Python 100 문제풀이 Part.3 - 모듈

개발곰발 2021. 7. 29.
728x90

💡 모듈

모듈이란?

모듈이란 관련된 변수와 함수를 모아놓은 하나의 프로그램 상자라고 생각하면 된다. 파이썬에 기본적으로 내장되어있는 모듈을 사용하여 여러가지 기능을 사용할 수 있다. 각기 다른 모듈을 부품삼아 하나의 프로그램을 만들 수 있는 것이다. sys 모듈, os 모듈, math 모듈, calendar 모듈, tkinter 모듈, random 모듈 등 수많은 모듈이 존재한다. 이러한 모듈 안에 어떤 것이 있는지 알고 싶다면 아래와 같이 적어주면 된다.

import random
dir random

모듈을 import 하는 방법에는 두 가지가 있다. 첫 번째는 모듈 전체를 가져오는 방법으로 아래와 같이 작성한다.

import random

두 번째는 필요한 모듈만 가져오는 방법으로 아래와 같이 작성한다.

from random import randint

random 모듈 사용법

random 모듈을 import하고 random.함수명()을 사용하면 모듈내 여러 유용한 함수를 사용할 수 있다. 다음은 random 모듈의 함수 중 내가 찾은 일부다.

✔ random.random() : 0.0 이상 1.0 미만의 실수를 랜덤으로 반환한다.

random.randint(a, b) : a와 b사이의 정수를 랜덤으로 반환한다. (b 포함)

random.randrange(a, b) : a이상 b미만의 정수를 랜덤으로 반환한다. (b 포함하지 않음)

random.choice() : 랜덤으로 하나의 요소를 선택하여 반환한다. 매개변수로 시퀀스 자료형을 받는다.(리스트, 튜플, range, 문자열..)

random.shuffle() : 원소의 배열 순서를 랜덤으로 섞는다. 내부 인자를 변경할 수 있는 '리스트'만 가능하다.

 random.sample() : 범위는 시퀀스 자료형을 사용하여 지정하고, 두 번째 인자는 난수의 갯수를 정한다. 리스트를 출력하며, 중복된 값이 나오지 않는다.

 random.uniform(a, b) : a와 b사이의 실수를 반환한다. (b 포함)

 random.triangular(low, high) : low와 high사이의 실수중 중앙값이 자주 나오도록 한다.

 

❔ 정수 5개를 원소로 갖는 리스트를 매번 프로그램을 실행할 때 마다 다른 난수로 지정하여 만드시오.

나는 random.sample() 함수를 몰랐기 때문에 반복문과 random.randint() 함수를 이용하여 빈 리스트에 하나식 추가하는 방법을 사용했다.

## 나의 풀이 ##
import random

# 랜덤 정수 출력
int_random = random.randint(1, 10)
print("랜덤 정수 : ", int_random, type(int_random))

#랜덤 리스트 출력
int_list = []
for i in range(5):
    int_list.append(random.randint(1, 10))
print("랜덤 정수 리스트 : ", int_list, type(int_list))

강의에 나온대로 random.sample() 함수를 이용하니 좀 더 짧은 코드로 작성할 수 있었다. 또한 바로 리스트로 반환되며, 중복을 피할 수 있다는 장점이 있었다.

## 강의 풀이 ##
import random

# 랜덤 정수 출력
int_random = random.randint(1, 10)
print("랜덤 정수 : ", int_random, type(int_random))

#랜덤 리스트 출력
int_list = random.sample(range(1,10),5)
print("랜덤 정수 리스트 : ", int_list, type(int_list))

임의의 정수를 난수로 생성하는 코드에서 틀린 부분을 찾아 설명해보시오.

a = random.randint(1, 10)
print(a)

b = random.sample(range(1, 10), 10)
print(b)

c = random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10)
print(c)

d = random.sample((1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 10)
print(d)

 

✔ 틀린 부분은  b 부분이다. 두 번째 인자가 10인데 첫 번째 인자는 1에서 9까지의 정수를 담고 있다. 두 번째 인자가 첫 번째 인자의 수를 초과하게 되면 valueError가 발생한다. b = random.sample(range(1, 11), 10) 로 고쳐주어야한다.

 

아래 코드에서 틀린 부분을 찾아서 설명해보시오.

import random

a = random.choice(input(""))
print('[1]', a)

b = random.choice(range(1,10))
print('[2]', b)

c = random.choice(['k', 'o', 'r', 'e', 'a', '', 'K', 'O', 'R', 'E', 'A'])
print('[3]', c)

d = random.choice([])  # Error, 빈 리스트를 받을 순 없다.
print(d)

✔ ramdom.choice() 함수는 리스트, 튜플, range, 문자열 등의 시퀀스 자료형을 받아서 랜덤으로 하나의 요소를 뽑아 반환한다. 그러나 빈 리스트를 매개변수로 받을 수는 없다.