조건문과 반복문 연습 노트북#
이 노트북에서는 조건문과 반복문에 대한 연습을 해봅시다.
import pandas as pd
import numpy as np
난수#
먼저 구간 (0,1) 에서 난수(random number)를 추출하는 np.random.rand()
함수를 사용하는 예제를 들어 봅시다.
먼저 1개의 난수를 발생시키려면 np.random.rand(1)
을 실행한다. 아래 코드 셀을 반복해서 실행하면 실행할 때마다 추출한 난수가 달라지는 것을 알 수 있다.
np.random.rand(1)
array([0.88900548])
여러 개의 난수를 추출하는 경우 원하는 개수를 함수 np.random.rand(n)
의 인자(arguement) n
에 넣어준다.
np.random.rand(10)
array([0.23459998, 0.89563664, 0.4914406 , 0.43072003, 0.29361073,
0.03823229, 0.99643643, 0.84046679, 0.10494487, 0.37621786])
np.random.rand(n)
으로 추출한 난수들은 벡터로 나타난다.
random_numbers = np.random.rand(20)
random_numbers
array([0.97185258, 0.07789154, 0.95999865, 0.5148956 , 0.94516439,
0.33040906, 0.38390034, 0.55593455, 0.97042378, 0.04891535,
0.79425625, 0.28713925, 0.52381529, 0.46015222, 0.4964237 ,
0.0470596 , 0.83278277, 0.50598442, 0.02198886, 0.70413954])
만약 (0,10)의 구간에서 난수를 추출하고 싶다면 추출한 난수에 10.0 을 곱해주면 된다.
np.random.rand(20)*10.0
array([0.51851409, 7.2725167 , 8.10556177, 7.37380418, 5.24395014,
8.20846327, 7.2733213 , 9.36897819, 3.43402526, 5.86642655,
8.11321171, 7.19483919, 2.86165196, 9.90977664, 7.97581272,
0.15705143, 0.64910463, 8.19987107, 6.38140455, 3.24124302])
만약 (-5,5)의 구간에서 난수를 추출하고 싶다면 어떻게 하면 될까? 추출한 난수에 10.0 을 곱해주고 5를 빼면 된다.
np.random.rand(20)*10.0 - 5.0
array([-4.98767305, -0.56423338, 3.19033574, -1.07190254, 3.5336461 ,
-0.5515447 , 3.75261551, -0.45358487, 0.08350684, -4.22394142,
-2.46472512, 2.66778768, 1.22063221, 0.01881524, -3.4328301 ,
0.12523345, -3.44079826, 2.53534614, 0.83160643, -2.2989138 ])
조건문#
주어진 숫자가 짝수인지 홀수인지 판단하는 조건문은?
파이썬에서 나눗셈을 하는 경우 나머지을 구하는 연산자는 % 이다.
10%2
0
11%2
1
x = 11 # x의 값을 바꾸어서 아래 코드를 실행시켜 보세요
if x%2 ==0 :
print("짝수")
else :
print("홀수")
홀수
주어진 숫자가 0과 10 사이에 있는지 판단하는 조건문은?
논리 연산자
and
: AND(그리고)of
: OR(또는)not
: NOT(부정)
y = 4 # y의 값을 바꾸어서 아래 코드를 실행시켜 보세요
if (y >= 0) and (y <= 10) :
print("숫자는 0과 10 사이에 있다.")
else :
print('숫자는 0과 10사이에 없다')
숫자는 0과 10 사이에 있다.
주어진 숫자가 정수형, 부동소숫점 또는 문자열인지 판단하는 조건문은?
z= 10.0 # z의 자료 형식 값을 바꾸어서 아래 코드를 실행시켜 보세요
type(z)
float
type(z) == float
True
type(2)
int
type("A")
str
if type(z) == float :
print("부동 소수점")
elif type(z) == int :
print("정수형")
elif type(x) == str :
print("문자열")
else :
print("???")
부동 소수점
반복문#
주어진 숫자 벡터에서 짝수만 더해주는 작업을 수행하는 반복문#
numbers_1 = np.arange(20) # z 값을 바꾸어서 아래 코드를 실행시켜 보세요
numbers_1
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
sum_1 = 0
for value in numbers_1 :
if value % 2 == 0 :
sum_1 = sum_1 + value
sum_1
90
주어진 숫자 벡터에서 짝수와 홀수의 개수를 세어주는 반복문#
numbers_2 = np.array([1,2,3,4,5,6,10,33,37 ]) # 값을 바꾸어서 아래 코드를 실행시켜 보세요
count_even = 0
count_odd = 0
for value in numbers_2 :
if value % 2 == 0 :
count_even = count_even + 1
elif value % 2 != 0 :
count_odd = count_odd + 1
count_even, count_odd
(4, 5)
다음 반복문의 결과는 무었일까요?#
t = "*"
for i in np.arange(10):
print(t*i)
*
**
***
****
*****
******
*******
********
*********
for i in np.arange(10):
print(t*i)
for j in np.arange(10,1,-1):
print(t*j)
*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
피보나치 수열#
다음 초기값 \(a_0=0\), \(a_1=1\) 가 주어진 경우 피보나치(Fibonacci) 수열 12개를 만드는 반복문을 작성해보세요.
\[ a_{n+2} = a_{n+1} + a_n , \quad n = 0,1,2,...10 \]
fibonacci = [0,1]
for i in np.arange(10) :
z = fibonacci[i+1] + fibonacci[i]
fibonacci.append(z) # list.append(z): 리스트 list 의 마지막 값으로 z 를 추가하는 메소드이다.
fibonacci
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
특정 문자의 포함 여부#
주어진 문자열 리스트에서 각 문자열이 특정한 문자를 포함한 개수를 세는 반복문
student_names = ['김철수', '이용희', '손흥민', '방탄소년', '김용희', '박서준', '김지원']
char_to_find = "용희"
count = 0
for value in student_names :
if char_to_find in value :
count = count + 1
count
2
다음 반복문의 결과는?#
for i in np.arange(10):
print(str(i) * i)
1
22
333
4444
55555
666666
7777777
88888888
999999999
for i in np.arange(10):
x = int(np.random.rand(1)*10)
print(str(x) * x)
999999999
55555
7777777
999999999
1
22
88888888
666666
days = 365
p = 0.5
date = np.arange(days)
money = np.repeat(0.0,days)
for i in np.arange(days-1):
if np.random.rand(1) < p:
money[i+1] = money[i] + 1.0
else :
money[i+1] = money[i] - 1.0
money
array([ 0., -1., 0., -1., 0., 1., 0., 1., 2., 1., 0.,
-1., -2., -3., -2., -3., -2., -1., -2., -1., -2., -1.,
-2., -1., -2., -3., -4., -5., -4., -5., -6., -5., -6.,
-5., -4., -3., -2., -1., -2., -3., -4., -3., -2., -3.,
-2., -3., -2., -1., -2., -1., -2., -3., -4., -5., -4.,
-3., -2., -3., -2., -1., -2., -3., -4., -5., -4., -5.,
-6., -5., -6., -7., -6., -7., -8., -9., -10., -9., -10.,
-9., -8., -9., -8., -7., -8., -7., -6., -7., -8., -7.,
-6., -5., -4., -5., -6., -5., -6., -5., -4., -3., -2.,
-1., -2., -3., -2., -3., -2., -1., 0., 1., 2., 3.,
2., 3., 4., 5., 6., 5., 6., 7., 8., 7., 8.,
7., 6., 7., 8., 7., 8., 7., 8., 9., 8., 9.,
8., 7., 6., 5., 6., 5., 6., 7., 6., 5., 6.,
7., 8., 9., 8., 7., 6., 7., 6., 5., 6., 7.,
8., 7., 8., 9., 8., 9., 10., 9., 10., 11., 12.,
13., 14., 15., 14., 13., 14., 13., 14., 13., 14., 13.,
14., 13., 14., 13., 12., 11., 10., 9., 8., 7., 6.,
5., 6., 7., 8., 7., 8., 7., 6., 5., 6., 7.,
8., 9., 10., 9., 8., 9., 10., 11., 10., 11., 12.,
11., 12., 13., 14., 15., 16., 17., 16., 17., 16., 17.,
16., 17., 18., 17., 18., 19., 18., 17., 16., 15., 16.,
15., 14., 15., 14., 13., 12., 13., 12., 11., 10., 9.,
10., 9., 8., 7., 8., 9., 10., 11., 10., 9., 8.,
7., 8., 7., 8., 9., 8., 9., 10., 9., 8., 9.,
10., 9., 10., 9., 8., 9., 10., 11., 10., 11., 10.,
11., 12., 13., 14., 15., 16., 15., 14., 15., 14., 13.,
14., 13., 14., 15., 16., 15., 14., 15., 16., 17., 16.,
15., 16., 17., 18., 17., 16., 15., 16., 15., 16., 17.,
18., 19., 20., 19., 20., 19., 20., 19., 20., 21., 22.,
23., 24., 25., 26., 27., 26., 27., 26., 25., 24., 25.,
26., 27., 26., 27., 26., 27., 28., 27., 28., 29., 28.,
29., 28., 27., 26., 25., 24., 23., 24., 23., 24., 25.,
26., 27., 26., 25., 26., 25., 26., 27., 26., 25., 26.,
27., 28.])
df = pd.DataFrame({'date':date, 'money':money})
df.plot(x='date', y='money')
<AxesSubplot:xlabel='date'>
