생능출판사 (가칭)"데이터과학 파이썬" 코드 3장

3.2 할당 연산자를 통해 변수에 값을 넣자

In [1]:
x = 100 + 200   # x에 100 + 200의 결과를 할당
x
Out[1]:
300
In [2]:
x = 20
y = 10
100 = x + y 
  File "<ipython-input-2-64b8e7398cec>", line 3
    100 = x + y
                ^
SyntaxError: can't assign to literal
In [ ]:
x = y = 100           # 여러 변수에 동일한 값을 할당하는 다중 할당문
x, y
In [ ]:
n1, n2 = 100, 200     # 여러 변수에 한꺼번에 여러 값을 할당하는 동시 할당문
n1, n2

3.3 수식과 연산자는 어떻게 쓰는 걸까

In [ ]:
7 / 4
In [ ]:
8 / 4 
In [ ]:
7 // 4

3.4 컴퓨터과학에서 아주 중요한 나머지 연산자 : %

In [ ]:
p = int(input("분자를 입력하시오: "))
q = int(input("분모를 입력하시오: "))
print("나눗셈의 몫=", p // q)
print("나눗셈의 나머지=", p % q)
In [ ]:
number = int(input("정수를 입력하시오: "))
print(number%2)
In [ ]:
4 * 2 ** 7

3.5 거듭제곱 연산자 : **

In [ ]:
a=1000
r=0.05
n=10
print(a*(1+r)**n)
In [ ]:
bottom = float(input('직각삼각형의 밑변의 길이를 입력하시오: '))
height = float(input('직각삼각형의 높이를 입력하시오: '))
hypotenuse = (bottom ** 2 + height ** 2 ) ** 0.5
print('빗변은', hypotenuse, '입니다')

LAB3-1 거북이 그래픽으로 숫자를 입력받아 다각형을 그리자

In [3]:
import turtle
t = turtle.Turtle()
t.shape("turtle")
n = int(input("몇각형을 그리시겠어요?(3-6): "))

for i in range(n) :
    t.forward(100)
    t.left(360//n)
    
turtle.done()
try:
    turtle.bye()
except:
    print("bye")     
몇각형을 그리시겠어요?(3-6): 6
bye

LAB3-2 화씨온도를 섭씨온도로 변환하기

In [4]:
fahrenheit = int(input("화씨온도: "))
celsius = (fahrenheit - 32) * 5 / 9
print("섭씨온도:", celsius)
화씨온도: 60
섭씨온도: 15.555555555555555
In [5]:
fahrenheit = float(input("화씨온도: "))
celsius = (fahrenheit - 32.0) * 5.0 / 9.0
print("섭씨온도:", celsius)
화씨온도: 60
섭씨온도: 15.555555555555555

LAB3-3 몸무게와 키를 입력받아 BMI 계산하기

In [6]:
weight = float(input("몸무게를 kg 단위로 입력하시오: "))
height = float(input("키를 미터 단위로 입력하시오: "))

bmi = (weight / (height**2)) 
print("당신의 BMI=",  bmi)
몸무게를 kg 단위로 입력하시오: 75
키를 미터 단위로 입력하시오: 68
당신의 BMI= 0.016219723183391002

LAB3-4 자동 판매기 프로그램을 만들어 보자

In [7]:
money = int(input("투입한 돈: "))
price = int(input("물건값: "))

change = money-price
print("거스름돈: ", change)
coin500s = change // 500# 500으로 나누어서 몫이 500원짜리의 개수
change = change % 500# 500으로 나눈 나머지를 계산한다. 
coin100s = change // 100# 100으로 나누어서 몫이 100원짜리의 개수

print("500원 동전의 개수:", coin500s)
print("100원 동전의 개수:", coin100s)
투입한 돈: 5000
물건값: 2400
거스름돈:  2600
500원 동전의 개수: 5
100원 동전의 개수: 1

3.6 복합 할당 연산자라는 데이터 과학을 위한 연산자

In [8]:
num = 200
num += 100          # 200 + 100 연산을 수행하여 그 결과를 num에 할당
num
Out[8]:
300
In [9]:
num -= 100          # 300 ? 100 연산을 수행하여 그 결과를 num에 할당
num
Out[9]:
200
In [10]:
num *= 20           # 200 * 20 연산을 수행하여 그 결과를 num에 할당
num
Out[10]:
4000
In [11]:
num /= 2            # 4000 / 2 연산을 수행하여 그 결과를 num에 할당
num
Out[11]:
2000.0
In [12]:
num /= 2            # 4000 / 2 연산을 수행하여 그 결과를 num에 할당
num
Out[12]:
1000.0

3.7 두 값의 크기를 비교하는 비교 연산자

In [13]:
a=777
b=888
a != b
Out[13]:
True
In [14]:
a > b
Out[14]:
False
In [15]:
a < b
Out[15]:
True
In [16]:
a >= b
Out[16]:
False
In [17]:
a >= b            # 두 개의 기호로 표현된 관계 연산자는 띄어쓰면 안 된다.
Out[17]:
False
In [18]:
a => b             # 두 개 기호로 표현된 관계 연산자의 순서를 뒤집어도 안 된다.
  File "<ipython-input-18-ffda666061a0>", line 1
    a => b             # 두 개 기호로 표현된 관계 연산자의 순서를 뒤집어도 안 된다.
       ^
SyntaxError: invalid syntax

3.8 AND, OR, NOT도 연산자로 사용가능하다 : 논리 연산자

In [19]:
10 > 20 # 10은 20보다 작으므로 10 > 20은 False가 됨
Out[19]:
False
In [20]:
10 < 20# 10은 20보다 작으므로 10 < 20은 True가 됨
Out[20]:
True
In [21]:
bool(9) # 9는 0이 아니므로 True가 됨
Out[21]:
True
In [22]:
bool(-1) # -1 역시 0이 아니므로 True가 됨
Out[22]:
True
In [23]:
bool(0)# 숫자 값중에서는 유일하게 0의 값만 False가 됨
Out[23]:
False
In [24]:
bool(None)# None은 값이 없음을 표현함, 따라서 False가 됨
Out[24]:
False
In [25]:
bool('')# 빈 문자열이므로 False가 됨
Out[25]:
False
In [26]:
bool('hello')# 문자열 값이 있으므로 True가 됨
Out[26]:
True

3.9 이진수를 잘 다루는 컴퓨터에 최적화된 연산자 : 비트 연산자

In [27]:
bin(9)
Out[27]:
'0b1001'
In [28]:
bin(10)
Out[28]:
'0b1010'
In [29]:
bin(9 & 10)
Out[29]:
'0b1000'
In [30]:
bin(9 | 10)
Out[30]:
'0b1011'
In [31]:
bin(~9)
Out[31]:
'-0b1010'
In [32]:
bin(9)      # 이진수 00001001
Out[32]:
'0b1001'
In [33]:
bin(10)     # 이진수 00001010
Out[33]:
'0b1010'
In [34]:
9 ^ 10      # 결과는 00000011 = 십진수 3
Out[34]:
3
In [35]:
bin(9 ^ 10) # 앞 부분의 0은 모두 사라지고 1이 나타나는 곳부터 출력된다.
Out[35]:
'0b11'
In [36]:
4 << 1      # 00100을 한 비트 왼쪽으로 이동하여 01000을 만든다.
Out[36]:
8
In [37]:
4 << 2      # 00100을 두 비트 왼쪽으로 이동하여 10000을 만든다.
Out[37]:
16
In [38]:
num = 2     # 정수 2는 이진수 10(2)으로 표현됨
num
Out[38]:
2
In [39]:
num <<= 1   # 정수 2를 1비트 왼쪽 이동시키면 100(4)가 됨
num
Out[39]:
4
In [40]:
num <<= 1   # 정수 4를 1비트 더 왼쪽 이동시키면 1000(8)이 됨
num
Out[40]:
8
In [41]:
num >>= 1   # 정수 8를 1비트 오른쪽쪽 이동시키면 100(4)가 됨
num
Out[41]:
4

LAB3-5 평균 구하기 - 연산자 우선순위

In [42]:
x = int(input("첫 번째 수를 입력하시오: "))
y = int(input("두 번째 수를 입력하시오: "))
z = int(input("세 번째 수를 입력하시오: "))
 
avg = (x + y + z) / 3   # 올바르게 고쳐진 계산
print("평균 =", avg) 
첫 번째 수를 입력하시오: 10
두 번째 수를 입력하시오: 20
세 번째 수를 입력하시오: 30
평균 = 20.0
In [43]:
import random
random.random()
Out[43]:
0.7574176866130924
In [44]:
random.random()
Out[44]:
0.46090182050089756
In [45]:
random.randint(1, 7)       # 1이상 7이하(7을 포함)의 임의의 정수를 반환
Out[45]:
5
In [46]:
 random.randrange(1, 7)     # 1이상 7미만(7을 포함안함)의 임의의 정수를 반환
Out[46]:
3
In [47]:
random.randrange(0, 10, 2) # 0, 2, 4, 8 중(10은 포함 안함) 하나를 반환함
Out[47]:
8
In [48]:
random.randrange(0, 10, 2) # 0, 2, 4, 8 중(10은 포함 안함) 하나를 반환함
Out[48]:
2
In [49]:
lst =[11, 22, 33, 44, 55]
random.shuffle(lst)
In [50]:
lst
Out[50]:
[55, 33, 44, 22, 11]
In [51]:
random.choice(lst)         
Out[51]:
55
In [52]:
import math
math.pow(3, 3)    # 3의 3 제곱
Out[52]:
27.0
In [53]:
math.fabs(-12345)    # -99의 실수 절대값
Out[53]:
12345.0
In [54]:
math.log(2.71828) 
Out[54]:
0.999999327347282
In [55]:
math.log(10000, 10) # 로그 10을 밑으로 하는 100값
Out[55]:
4.0
In [56]:
math.pi           # 원주율
Out[56]:
3.141592653589793
In [57]:
math.sin(math.pi)   # sin() 함수의 인자로 PI/2.0를 넣어보자
Out[57]:
1.2246467991473532e-16
In [ ]: