Gachon CS50 Python Basics I Basic Operators 가천대학교 | 산업경영공학과 최성철 교수
Basic Operators (간단한 연산) 복잡한 프로그램을 작성하기 앞서 간단한 사칙연산과 문자열 처리 등의 기본을 배워야 함 이를 위해 본 장에서는 아래 내용을 습득 1) 기본 자료형 (Data Types) 2) 연산자와 피연산자 3) 데이터 형변환 이를 통해 간단한 프로그램 작성의 기초를 익힘
기본 자료형 (Fundamental Data Types) 유형 설명 예시 선언 형태 수치자료형 정수형 Integer 양/음의 정수 1,2,3,100, -9 data = 1 실수형 Float 소수점이 포함된 실수 10.2, -9.3, 9.0 data = 9.0 문자형(문자형) String 따옴표 (' / ")에 들어가 있는 문자형 abc, a20abc data = 'abc' 논리/불린 자료형 Boolean 참 또는 거짓 True, False data = True
자료형 사용 예시 >>> a = 1 # Integer >>> b = 1 # Integer >>> print (a, b) 1 1 >>> a = 1.5 # Float >>> b = 3.5 # Float 1.5 3.5 >>> a = "ABC" # String >>> b = "101010" # String ABC 101010 >>> a = True # Boolean 대소문자 구분 >>> b = False # Boolean 대소문자 구분 True False Python Shell
연산자(Operator)와 피연산자(operand) + , - , * , / 같은 기호들을 연산자라고 칭함 연산자에 의해 계산이 되는 숫자들은 피연산자라 칭함 “3 + 2” 에서 3과 2는 피연산자 , +는 연산자임 파이썬에서 연산자의 역할은 수학에서 연산자와 동일 연산의 순서는 수학에서 연산 순서와 같음 지수 연산, 괄호 연산, 좌측에서 우측순으로 연산, 곱셈 과 나눗셈을 먼저 연산하고 덧셈과 뺄셈으로 연산 문자간에도 + 연산이 가능함
제곱승과 나머지 구하기 “**"는 제곱승 계산 연산자 “%"는 나머지를 구하는 연산자 >>> print (3 * 3 * 3 * 3 * 3) # 3을 다섯번 곱함 243 >>> print (3 ** 5) # 3의 5승 Python Shell “%"는 나머지를 구하는 연산자 >>> print (7 / 2) # 7 나누기 2 (정수형 계산) 3.5 >>> print (7 % 2) # 7 나누기 2의 나머지는 1 Python Shell
증가 또는 감소 연산 a += 1 는 a = a +1 과 같은 의미로 증가연산 (-= 동일) >>> a = a + 1 # a 에 1를 더한 후 그 값을 a에 할당 >>> print (a) # a 출력 2 >>> a += 1 # a 증가 연산 3 >>> a = a – 1 # a 에 1를 뺀 후 그 값을 a에 할당 >>> a -= 1 # a 감소 연산 1 Python Shell
증가 또는 감소 연산 a = a +1 의 의미는? 만약 a = 4 일 때 a = 4 + 1 로 a에 다시 5가 할당(assign)됨 즉 좌변에 a는 할당 받는 변수 (variable) 우변에 a는 기존 a의 값(value)
데이터 형변환: 정수형 ↔ 실수형 float()와 int() 함수를 사용하여 데이터의 형변환 가능 >>> a = 10 # a 변수에 정수 데이터 10을 할당 >>> print (a) # a가 정수형으로 출력 10 >>> a = float(10) # a를 실수형으로 변환 / 정수형은 int() >>> print (a) # a를 출력 10.0 # a가 실수형으로 출력됨 >>> b = 3 # b 에 정수 데이터 3 할당 >>> print a / b # 실수형으로 a 나누기 b를 출력 3.33333333333 # 실수형 결과값 출력 Python Shell 10.3과 10.7 정수형으로 형변환후 덧셈하면 결과값은?
데이터 형변환: 정수형 ↔ 실수형 10.3과 10.7 정수형으로 형변환후 덧셈하면 결과값은? >>> a = 10.7 >>> b = 10.3 >>> a= int(a) # a를 정수형으로 형변환후 a에 할당 >>> b = int (b) # b를 정수형으로 형변환후 b에 할당 >>> print (a+b) # 정수형 a와 b의 합을 출력 20 >>> print (a) # 정수형 a값 출력 10 >>> print (b) # 정수형 b값 출력 Python Shell 실수형으로 정수형으로 형변환시 소수점 이하 내림
데이터 형변환: 숫자 ↔ 문자열 문자열로 선언된 값도 int() , float()함수로 형변환 가능 >>> a = '76.3' # a에 문자열 76.3을 할당, ''은 문자열을 의미 >>> b = float(a) # a를 실수형으로 형변환후 b에 할당 >>> print (a) # a값 출력 76.3 >>> print (b) # b 값 출력 >>> print (a + b) # a와 b를 더함 그러나 문자열과 숫자열의 Traceback (most recent call last): # 덧셈이 불가능하여 에러발생 File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'float' objects Python Shell a와 b를 실수형으로 덧셈하고, 문자열로 연결하려면?
데이터 형변환: 숫자 ↔ 문자열 a와 b를 실수형으로 덧셈하고, 문자열로 연결하려면? >>> a = float(a) # a를 실수형으로 형변환 후 a에 할당 >>> b = a # 실수형 a 값을 b에 할당 >>> print (a + b) # 두 실수형 더한후 출력 152.6 >>> a = str(a) # 실수형 a 값 문자열로 변환후 a 할당 >>> b = str(b) # 실수형 b 값을 문자열로 변환후 b 할당 >>> print (a + b) # 두 값을 더한 후 출력 76.376.3 # 문자열간 덧셈은 문자열간 단순 연결 Python Shell str() 함수는 숫자 값을 문자 값으로 변환함 데이터간의 형변환을 casting 이라고 함
데이터 형 확인하기 type() 함수는 변수의 데이터형을 확인하는 함수 >>> a=int(10.3) # a는 정수형으로 10.3을 할당 >>> b=float(10.3) # b는 실수형으로 10.3을 할당 >>> c=str(10.3) # c는 문자열로으로 10.3을 할당 >>> type(a) # a의 타입을 출력 <class 'int'> >>> type(b) # b의 타입을 출력 <class 'float'> >>> type(c) # c의 타입을 출력 <class 'str'> Python Shell
컴퓨터의 반올림 오차 아래와 같이 나오는 이유는 무엇일까? 컴퓨터의 모든 값은 이진수로 변환되어 메모리에 저장 >>> c = 38.8 # c에 실수형 38.8 할당 >>> print c # c 출력 38.8 >>> c # c에 있는 값은? 38.799999999999997 # 응? Python Shell 2.7 Only 컴퓨터의 모든 값은 이진수로 변환되어 메모리에 저장 Python 2.7에서만 나오는 숫자 3.8에선 정상으로 나옴
컴퓨터의 반올림 오차 0.1를 이진수 변환하여라 0.00011001100110011……(2) 0.1 X 2 = 0.2 → 0 0.2 X 2 = 0.4 → 0 0.4 X 2 = 0.8 → 0 0.8 X 2 = 1.6 → 1 0.6 X 2 = 1.2 → 1 0.2 X 2 = 0.4 → 0 ……… 0.00011001100110011……(2) 단순한 실수도 이진수로 변환하면 무한소수가 됨 반올림오차는 충분히 작아 반올림을 하여 일반적으로 문제가 되지 않음
[알아두면 상식] 컴퓨터는 왜 이진수를 쓰나? 컴퓨터는 실리콘이라는 재료로 만든 반도체로 구성됨 반도체는 특정 자극을 줬을 때 전기를 통할 수 있게 하는 물질 Source : http://samsungsemiconstory.com/1 도체와 부도체에 반해 반도체는 전류의 흐름의 제어가 가능 전류가 흐를때 1, 흐르지 않을 때 0으로만 숫자를 표현할 수 있음 이진수 한자리를 bit라 칭하고 8개의 bit는 1byte