비전공개미 개발노트
python 4일차 - math, random 본문
반응형
    
    
    
  SMALL
    In [3]:
import math
In [4]:
math.sin(1)
Out[4]:
0.8414709848078965
In [5]:
math.cos(1)
Out[5]:
0.5403023058681398
In [7]:
math.tan(1)
Out[7]:
1.5574077246549023
In [8]:
# 내림
math.floor(2.5)  
Out[8]:
2
In [9]:
# 올림
math.ceil(2.5)
Out[9]:
3
In [13]:
# 반올림
round(3.5)
Out[13]:
4
In [14]:
round(1.3)
Out[14]:
1
In [15]:
round(3.141592, 2)  # 소수점 2번째까지
Out[15]:
3.14
In [16]:
round(3.141592, 3)  # 소수점 3번째까지
Out[16]:
3.142
In [17]:
round(321.141592, -1)  # 소수점 앞에자리로 가서 반올림
Out[17]:
320.0
In [18]:
from math import sin
sin(1)  ## math에서 sin함수를 불러와서 math.를 앞에 붙이지 않고도 sin만 불러서 사용가능
Out[18]:
0.8414709848078965
random¶
In [20]:
### 무작위 1 2 3 -> 범위를 지정하여 임의의 숫자를 추출
In [21]:
import random as r
In [69]:
r.random()  # 0.0 <= x <= 1.0 사이의 임의값
Out[69]:
0.9962316744420537
In [183]:
r.uniform(1, 10)  # 1 ~ 10 사이의 float값을 추출
Out[183]:
8.812622486326891
In [187]:
math.ceil(r.uniform(1, 10))  # 1에서 10미만까지의 소수점에서 ceil로 올림하여 출력
Out[187]:
3
In [250]:
r.randrange(10)  # 0 ~ 9까지의 임의값 추출
Out[250]:
3
In [267]:
r.randrange(1, 11)  # 1 ~ 10까지의 임의값 추출
Out[267]:
8
In [303]:
r.randrange(-1, 2)  # -1 0 1
Out[303]:
-1
In [355]:
r.randint(1, 45)  # 1 ~ 45가 포함된 숫자에서 임의값 추출 (randrange와 범위가 다름)
Out[355]:
13
In [375]:
r.choice([1, 2, 3, 4, 5])  # 안에 있는 숫자에서 랜덤값 추출
Out[375]:
3
In [411]:
randlist = [3, 5, 6, 21, 34]
r.choice(randlist)
Out[411]:
34
In [453]:
### shuffle (섞기)
rnum = [1, 2, 3, 4, 5]
r.shuffle(rnum)
rnum  # 숫자 전체의 순서를 랜덤으로 정렬
Out[453]:
[5, 1, 3, 2, 4]
In [454]:
rnum[0]
Out[454]:
5
In [469]:
r.sample([1, 2, 3, 4, 5], k=3)  # k == 뽑고싶은 갯수입력
Out[469]:
[4, 3, 1]
In [633]:
# 로또번호 추출
lottonumber = list(range(1, 46))
sorted(r.sample(lottonumber, k=6))
Out[633]:
[1, 10, 16, 18, 28, 31]
In [472]:
import os  # os == operating system
In [475]:
os.name  # nt -> windows  /  posix -> 리눅스
Out[475]:
'nt'
In [477]:
os.getcwd()  # 작업하고 있는 현재폴더
Out[477]:
'E:\\pythonLanguage'
In [479]:
os.listdir()  # 현재디렉토리에 있는 모든 파일들
Out[479]:
['.ipynb_checkpoints',
 'calculator.py',
 'chap01.ipynb',
 'chap1',
 'python_language1.ipynb',
 'python_language1.py',
 'python_language2.ipynb',
 'python_language3.ipynb',
 'python_language4.ipynb',
 'python_language5.ipynb',
 'python_language6.ipynb',
 'python_practice_8_30.ipynb',
 'python_practice_8_31.ipynb',
 'test.ipynb',
 'test.py',
 'test.txt',
 'test1.txt',
 'testp.txt',
 'test_p.txt',
 '__pycache__']
In [480]:
os.mkdir('mydata')  # 현재디렉토리에 새로운 폴더/파일을 생성
In [481]:
os.rmdir('mydata')  # 현재디렉토리에 있는 폴더/파일을 삭제(주의!!)
과제¶
In [484]:
# 1) 임의의 0 ~ 100 사이의 숫자를 20 개 생성 목록에 저장하라
In [690]:
import random
my_list = []
for i in range(20):
    my_list.append(random.randint(0, 100))
    
mylist = sorted(my_list)
mylist
Out[690]:
[1, 4, 7, 14, 18, 22, 24, 30, 33, 43, 44, 46, 47, 53, 55, 62, 72, 72, 81, 82]
In [691]:
# 2) 목록의 내용을 2승하라. (map, lambda)
In [692]:
# map 과 lambda
# 일반 함수 이용
# def func_mul(x):
#     return x * 2
# result1 = list(map(func_mul, [5, 4, 3, 2, 1]))
# print(f"map(일반함수, 리스트) : {result1}")
# # 람다 함수 이용
# result2 = list(map(lambda x: x * 2, [5, 4, 3, 2, 1]))
# print(f"map(람다함수, 리스트) : {result2}")
#### 구글링 참조
mylist = list(map(lambda x : x ** 2, mylist))
mylist
Out[692]:
[1,
 16,
 49,
 196,
 324,
 484,
 576,
 900,
 1089,
 1849,
 1936,
 2116,
 2209,
 2809,
 3025,
 3844,
 5184,
 5184,
 6561,
 6724]
In [693]:
# 3) 목록에서 2000 이하의 수치를 산출해서 표시하라 (filter)
In [694]:
# for woman in filter(lambda u: u["sex"] != "M", users):
#     print(woman)
m_list = []
######구글링 참조하여 대입해보자
for a in filter(lambda b : b <= 2000, mylist):
    m_list.append(a)
m_list
    
Out[694]:
[1, 16, 49, 196, 324, 484, 576, 900, 1089, 1849, 1936]
In [695]:
# 4) 꺼낸 수치를 모두 합산하여 표시하라 (reduce)
In [696]:
from functools import reduce
In [697]:
m_list = reduce(lambda x, y: x+y, m_list)
m_list
Out[697]:
7420
과제풀이¶
In [ ]:
# 1) 임의의 0 ~ 100 사이의 숫자를 20 개 생성 목록에 저장하라
In [612]:
import random
my_list = []
for i in range(20):
    my_list.append(random.randint(0, 100))
In [616]:
my_list = [random.randint(0, 100) for i in range(20)]
my_list
Out[616]:
[15, 39, 65, 10, 82, 99, 47, 87, 17, 46, 39, 69, 3, 11, 97, 84, 10, 74, 8, 82]
In [ ]:
# 2) 목록의 내용을 2승하라. (map, lambda)
In [617]:
## 첫번째 방법
new_list = []
for n in my_list:
#     print(n**2)
    new_list.append(n ** 2)
    
new_list
Out[617]:
[225,
 1521,
 4225,
 100,
 6724,
 9801,
 2209,
 7569,
 289,
 2116,
 1521,
 4761,
 9,
 121,
 9409,
 7056,
 100,
 5476,
 64,
 6724]
In [620]:
## 두번째 방법
new_list = [n**2 for n in my_list]
new_list
Out[620]:
[225,
 1521,
 4225,
 100,
 6724,
 9801,
 2209,
 7569,
 289,
 2116,
 1521,
 4761,
 9,
 121,
 9409,
 7056,
 100,
 5476,
 64,
 6724]
In [623]:
## 세번째 방법
new_list = list(map(lambda n:n**2, my_list))
new_list
Out[623]:
[225,
 1521,
 4225,
 100,
 6724,
 9801,
 2209,
 7569,
 289,
 2116,
 1521,
 4761,
 9,
 121,
 9409,
 7056,
 100,
 5476,
 64,
 6724]
In [ ]:
# 3) 목록에서 2000 이하의 수치를 산출해서 표시하라 (filter)
In [624]:
## 기본적인 방법
list2000 = []
for n in new_list:
    if n <= 2000:
        list2000.append(n)
        
list2000
Out[624]:
[225, 1521, 100, 289, 1521, 9, 121, 100, 64]
In [626]:
## filter를 사용하는 방법
list2000 = list(filter(lambda n : n <= 2000, new_list))
list2000
Out[626]:
[225, 1521, 100, 289, 1521, 9, 121, 100, 64]
In [ ]:
# 4) 꺼낸 수치를 모두 합산하여 표시하라 (reduce)
In [634]:
# 기본적인 방법
_sum = 0
for n in list2000:
    _sum += n
_sum
Out[634]:
3950
In [635]:
# reduce 사용방법
from functools import reduce
from operator import add  # add함수 사용하여 전체합계 계산
반응형
    
    
    
  LIST
    '프로그래밍 > Python' 카테고리의 다른 글
| python 4일차 - class(클래스) (0) | 2022.09.01 | 
|---|---|
| python 4일차 - 가위바위보, UP&DOWN 게임만들기 (0) | 2022.09.01 | 
| python 3일차 - file write/read, try catch 예외처리 (0) | 2022.08.31 | 
| python 3일차 - 함수, 매개변수, 가변인자 (0) | 2022.08.31 | 
| python 3일차 - 람다(lambda)를 이용하여 줄여쓰기 (0) | 2022.08.31 | 
			  Comments