2 데이터와 표현

2023. 10. 21. 22:35프로그래밍 공부/Python

MOTIVATION

데이터 사이즈의 측정

용어 사이즈(바이트) 동일한 용량
KiloByte(KB) 10^3 타이핑한 페이지(2KB)
MegaByte(MB) 10^6 작은 소설(1MB)
GigaByte(GB) 10^9 트럭에 가득 실린 책들(1GB)
TeraByte(TB) 10^12 학술 연구 도서관(2TB)
PetaByte(PB) 10^15 모든 미국 학술 도서관(2PB)
ExaByte(EB) 10^18 말하는 모든 단어(5EB)
ZettaByte(ZB) 10^21 매 해 생산되는 데이터의 양

 

기초 개념
2.1 리터럴(Literals)

2.1.1 리터럴(Literal)이란?

리터럴(literal): 그 자체를 나타내는 하나 또는 그 이상의 문자들의 연속

 

2.1.2 숫자 리터럴(Numeric Literals)

ex) 5, 5.0, 0.05, 2500, 2500. , +2500, -2500

숫자 리터럴(Numeric Literal): 0-9 숫자, 부호(+ or -), 소수점. 반점(,)은 포함하지 않는다.

 

부동 소숫점(Floating-Point) 표현 범위의 제한

ex) 9.0045602e^+5 (9.0045602 X 10^ 5, 8 digits of precision)
1.006249505236801e^8 (1.006249505236801 X 10^ 8, 16 digits of precision)
4.239e^-16 (4.239 X 10^ -6 , 4 digits of precision)

산술 오버플로(Arithmetic overflow): 계산된 결과값이 표현되기에 너무 클 때 발생한다.
산술 언더플로(Arithmetic underflow): 계산된 결과값이 표현되기에 너무 작을 때 발생한다.

 

부동 소숫점 표현 정확성 제한

ex) 

>>> 1/3
.3333333333333333

 

>>> 3 * (1/3)
1.0

 

>>> 1/3 1 1/3 1 1/3 1 1/3 1 1/3 1 1/3
1.9999999999999998

부동 소숫점 표현이 오직 유한한 개수의 숫자만을 포함하기 때문에 많은 부동 소숫점 값을 보유한 것은 오직 실제 가치의 근사치이다.

 

내장된 format 함수 활용

>>> format(12/5, '.2f') 
'2.40' 

 

>>> format(5/7, '.2f')

'0.71'

 

>>> format(2 ** 100, '.6e')
'1.267651e + 30'

내장된 format 함수를 사용하여 특정 소수점 자리로 반올림한 지정 부동 소수점 값의 숫자 문자열을 만들 수 있다.

 

2.1.3 문자열 리터럴(String Literals)

'Hello' 'Smith, John' "Baltimore, Maryland 21210"

문자열 리터럴(String Literal) 또는 문자열(String): Python에서 일치하는 단일 또는 이중(때로는 삼중) 따옴표 쌍으로 표시되는 문자 시퀀스

 

The Representation of Character Values

유니코드(Unicode): 과거와 현재의 모든 언어의 문자를 충분히 나타낼 수 있는 40억 개 이상의 다른 문자를 표현할 수 있다.

UTF-8: 유니코드 표준의 일부인 8비트 인코딩이며 파이썬(기본값)의 문자 인코딩으로 사용한다.

ord(): 주어진 문자 -> UTF-8.  ex)ord('A') = 65

chr(): UTF-8 -> 주어진 문자.  ex)chr(65)='A'


2.1.4 Control Characters

제어 문자(control character): 출력의 표시를 제어하기 위해 사용되는 비인쇄 문자

이스케이프 시퀀스(escape sequence): 제어 문자를 나타내기 위해 사용되는 하나 이상의 문자의 문자열

ex) '\n': 줄바꿈 제어 문자

 

ex)

print('Hello\nJennifer Smith')

 

출력화면

Hello
Jennifer Smith

 

2.1.5 문자열 포맷팅(String Formatting)

format(value, format_specifier)

왼쪽 정렬 폭 20: format('Hello', ' < 20') ➝ 'Hello         '

오른쪽 정렬 폭 20: format('Hello', ' > 20') ➝ '        Hello'

가운데 정렬 폭 20: format('Hello', '^20') ➝ '    Hello    '

빈칸 문자 30개: format(' ', '30') ➝ '                    '

문자열이 표시되는 방식을 제어하기 위해 내장된 함수 format을 사용할 수 있다.

 

2.1.6 암시적 그리고 명백한 줄 결합(Implicit and Explicit Line Joining)

암시적 줄 결합(Implicit Line Joining)

( ) [ ] { } 를 사용하여 논리 프로그램 줄을 둘 이상의 물리적 줄에 걸쳐 사용할 수 있다.

print('Name:', student_name, 'Address:', student_address,
'Number of Credits:', total_credits, 'GPA:', current_gpa)

 

명백한 줄 결합(Explicit Line Joining)

백슬래시(\)를 사용하여 프로그램 줄을 명시적으로 결합할 수 있다.

numsecs_1900_dob = ((year_birth 2 1900) * avg_numsecs_year) 1 \
((month_birth 2 1) * avg_numsecs_month) 1 \
(day_birth * numsecs_day)


2.2 변수(Variables)와 식별자(Identifiers)

2.2.1 변수란?

변수(variable): 값과 연관된 이름

할당 연산자(assignment operator): =, 변수에 값을 할당하는 데 사용된다

불변의 값(Immutable value): 변경할 수 없는 값

num = 10, num = num + 1

k = num, 

id(num)

>>> 505494040

id(k)

>>> 505494040

변수 num과 k는 모두 메모리에서 동일한 리터럴 값 10과 연관되어 있다.

 

2.2.2 Variable Assignment and Keyboard Input

>>> name = input('What is your fi rst name?')
What is your first name? John

line = input('How many credits do you have?')
num_credits = int(line)
line = input('What is your grade point average?')
gpa = float(line)

모든 입력은 문자열 유형으로 input 함수에 의해 반환된다.

기본 함수 int()와 float()를 사용하여 문자열을 숫자 유형으로 변환할 수 있다.

 

2.2.3 식별자란?

ex) line, num_credits,  gpa

식별자(identifier): 주어진 프로그램 요소의 이름을 짓는데 사용되는 하나 이상의 문자의 시퀀스

파이썬에서 식별자는 문자숫자를 포함할 수 있지만 숫자로 시작할 수 없다. 특수 밑줄 문자도 사용할 수 있다.

 

2.2.4 키워드와 그외 다른 미리 파이썬에서 정의된 식별자 

키워드(Keyword): 프로그래밍 언어에서 미리 정의된 의미를 가지는 식별자.

따라서 키워드는 "정규" 식별자로 사용할 수 없다. 이렇게 하면 구문 오류가 발생한다.
help()를 이용하면 파이썬 내 키워드 리스트를 확인할 수 있다.


2.3 연산자

2.3.1 연산자란?

연산자(operator): 하나 이상의 피연산자(operand)에 대해 수행될 수 있는 연산을 나타내는 기호 ex) 2+3에서 '+'

단항 연산자(unary operator): 하나의 피연산자를 취하는 연산자 ex) -12에서 음의 연산

이진 연산자(binary operator): 두 피연산자를 취하는 연산자 ex) 더하기 연산

 

2.3.2 Arithmetic Operators

Arithmetic Operators(산술 연산자) Example(예시) Result(결과)
-x negation(부정) -10 -10
x + y addition(덧셈) 10 + 25 35
x - y subtraction(뻴셈) 10 - 25 -15
x * y multiplication(곱셈) 10 * 5 50
x / y division(나눗셈) 25 / 10 2.5
x // y truncating div(몫) 25 // 10 2
    25 // 10.0 2.0
x % y modulus(나머지) 25 % 10 5
x ** y exponentiation(거듭제곱) 10 ** 2 100

 

2.4 표현식과 데이터 타입

2.4.1 표현식은 무엇인가?

표현식(expression): 값을 평가하는 기호(또는 단일 기호)의 조합

하위 표현식(sub-expression): 더 큰 표현식의 일부인 모든 표현식

ex)

4 + (3 * k)

표현식: 4 + (3 * k)

하위 표현식: 4, 3*k


2.4.2 연산자 우선 순위

연산자 우선 순위(Operator Precedence): 주어진 연산자 우선 순위표에 의해 정의된 식을 평가할 때 연산자가 적용되는 상대 순서

Operator(연산자) Associativity(연관성)
**(exponentiation) right-to-left 오른쪽 -> 왼쪽
-(negation) left-to-right 왼쪽 -> 오른쪽
*(multiplication), /(division) , //(truncating div), %(modulus) left-to-right 왼쪽 -> 오른쪽
+(addition), -(subtraction) left-to-right 왼쪽 -> 오른쪽

Python에서 산술 연산자의 연산자 우선 순위

 

2.4.3 연산자 연관성

연산자 연관성(Operator Associativity): 연산자가 각 연산자에 고유한 동일한 수준의 우선 순위를 가질 때 적용되는 순서

 

2.4.4 데이터 타입이란?

데이터 타입(data type): 값의 집합, 이러한 값에 적용할 수 있는 연산자의 집합

정적 타이핑(static typing): 변수는 사용되기 전에 특정 유형으로 선언되며 해당 유형의 값만 할당할 수 있다.

동적 타이핑(dynamic typing): 변수의 데이터 유형은 해당 변수가 현재 보유하고 있는 값의 유형에만 의존한다. Python에서 이용한다.

 

2.4.5 혼합형 식

혼합형 식(mixed-type expression): 다른 유형의 피연산자가 있는 식

강제성(Coercion): 피연산자를 일반적인 유형으로 암묵적으로(자동적으로) 변환하는 것

ex) 2 + 4.5 -> 2.0 + 4.5 -> 6.5 (int에서 float 자동 변환)

타입 변환(Type conversion): 피연산자를 특정 유형으로 명시적으로 변환하는 것

float(2) + 4.5 ➝ 2.0 + 4.5 ➝ 6.5
2 + int(4.5) ➝ 2 + 4 ➝ 6

'프로그래밍 공부 > Python' 카테고리의 다른 글

5 함수  (0) 2023.10.23
4 리스트  (1) 2023.10.23
3 제어 구조  (0) 2023.10.22
1 소개  (0) 2023.10.21
파이썬 기초 개요  (0) 2023.10.21