설치
1강
2강
3강
4강
5강
6강
7강
# 4강
¶

### import 문법
¶

### 몇 가지 유용한 module
¶

#### a,a,b,c,c,c를 일렬로 세우는 모든 경우를
출력하는 코드를 작성해보세요.
(물론 중복없이 나열하여야 함)
¶

### import해서 이름 변경해서 쓰기
¶

#### 앞에 모듈명.함수명 을 함수명으로만
실행시킬수 있다. 하지만 비추천!!
(같은 함수의 이름이 중복되어
버그가 생길수도..)
¶

#### 보통 모듈의 이름이 길때 사용한다.
관례적으로 이렇게 사용하는
모듈들이 있다.
¶

### 연습문제0
¶

### 연습문제1
¶

#### Q: 주머니 속에 숫자 1이 적힌 카드가
세 장, 숫자 2가 적힌 카드가 3장,
3이 적힌 카드가 3장이 들어있다.
이 주머니에서 임의로 세장의
카드를 동시에 뽑을 때, 카드에
적힌 숫자의 합이 3의 배수가 될
확률은? (학교 시험 기출문제)
¶

- 다른 파이썬 소스파일 내 함수/클래스 등을 현재의 공간으로 가져오기
- 여러가지 존재하는 모듈을 사용할 수 있는 방법
- python이 유용한 이유 중 하나

In [2]:

```
import random
```

In [4]:

```
random?
# 실제 파일을 한번 열어봅시다.
```

In [5]:

```
print(help(random))
```

In [4]:

```
print(random.__doc__)
```

In [5]:

```
print(random.__file__) ## import한 package의 위치 출력
```

In [7]:

```
print(random.random())
```

In [8]:

```
print(random.randint(1,10))
```

In [10]:

```
print(random.choice([1,3,5,7]))
```

In [11]:

```
print(choice([1,3,5,7]))
```

In [12]:

```
k=[1,3,5,7]
random.shuffle(k)
```

In [13]:

```
k
```

Out[13]:

In [15]:

```
import math
```

In [17]:

```
math?
```

In [22]:

```
math.exp(1)
```

Out[22]:

In [23]:

```
math.fabs(-2)
```

Out[23]:

In [25]:

```
math.gcd(6,18)
```

Out[25]:

In [7]:

```
import itertools
```

In [8]:

```
itertools?
```

문서를 검색하여 내용을 확인해봅시다.

In [33]:

```
itertools.product('ABCD', repeat=2)
```

Out[33]:

In [34]:

```
list(itertools.product('ABCD', repeat=2))
```

Out[34]:

In [35]:

```
for i in itertools.product('ABCD', repeat=2):
print(i)
```

In [37]:

```
for i in itertools.combinations('ABCD', 2):
print(i)
```

In [38]:

```
for i in itertools.combinations_with_replacement('ABCD', 2):
print(i)
```

In [40]:

```
for i in itertools.permutations('ABC', 3):
print(i)
```

In [41]:

```
fabs(-3)
```

In [42]:

```
math.fabs(-3)
```

Out[42]:

In [45]:

```
from math import fabs #비추천
```

In [44]:

```
fabs(-6)
```

Out[44]:

In [48]:

```
import math as mt #math라는 모듈을 mt 라는 이름으로 실행가능
```

In [49]:

```
mt.fabs(-3)
```

Out[49]:

- import numpy as np
- import matplotlib.pyplot as plt

https://programmers.co.kr/learn/courses/30/lessons/12943

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다.

1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.

2.위의 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.

- 시뮬레이션으로 확률을 구해보자.
- 전체경우의 수와 원하는 경우의 수를 모두 출력하여 수학적 확률을 구해보자.

In [ ]:

```
```