본문 바로가기
정상을향해/Languages

파이썬(Python)_변수 / 표현식 / 문장

by 사이테일 2019. 2. 16.

출처 : https://www.py4e.com/lessons/memory
참조 : https://www.py4e.com/html3/02-variables


Python Lecture2. Variables, expressions and statements

상수(Constants)

값이 변하지 않는 숫자, 문자, 문자열과 같은 고정값을 상수(constants) 라고 한다.

  • 숫자 -> 상수
  • 작은따옴표(') 혹은 큰따옴표(")로 표시된 문자열 -> 상수
>>> print(123)
123
>>> print(98.6)
98.6
>>> print('Hello World!')
Hello World!

예약어(Reserved Words)

예약어(reserved words) 는 파이썬이 정한 의미로만 쓰이는 특별한 단어다. 이러한 예약어 들은 상수로 사용할 수 없다.

and       del       from      None      True
as        elif      global    nonlocal  try
assert    else      if        not       while
break     except    import    or        with
class     False     in        pass      yield
continue  finally   is        raise
def       for       lambda    return

변수(Variables)

변수(variable) 는 이름이 주어진 메모리로, 변수 '이름'을 통해 데이터를 저장하고 검색이 가능하다.

  • 프로그래머가 변수 이름을 지정
  • 대입문을 통해 변수값을 변경 가능

변수 이름 규칙(Python Variable Name Rules)

  • 문자(letter) 또는 언더바(_)로 시작(숫자로 시작 불가)
  • 문자, 숫자, 언더바로 구성
  • 대소문자 구분

파이썬은 변수 이름의 대소문자를 구분하지만 이를 이용해 변수를 구별하는 것은 좋지 않다.
또한 언더바로 시작하는 변수명도 되도록 사용하지 않는 것이 좋다.

Good:       spam    eggs    spam23
Bad:        23spam  #sign   var.12
Different:  spam    Spam    SPAM

니모닉 변수 이름(Mnemonic Variable Names)

변수 이름은 프로그래머 마음대로 지정 가능하다. 하지만 변수값과 연관지어 변수 이름을 지정하는 것이 좋다("mnemonic" = "memory aid").

# Case1. 길고 무작위로 작성한 변수 이름 - Worst
x1q3z9ocd = 35.0 
x1q3z9afd = 12.50
x1q3p9afd = x1q3z9ocd * x1q3z9afd
print(x1q3p9afd)

# Case2. 간단한 변수 이름 - Bad
a = 35.0 
b = 12.50 
c = a * b 
print(c)

# Case3. 니모닉 변수 이름 - Good
hours = 35.0 
rate = 12.50 
pay = hours * rate 
print(pay)

세 예제 모두 동일한 결과를 출력한다. 하지만 니모닉 변수 이름을 사용하는 것이 코드의 내용을 이해하기 훨씬 쉽다.

문장과 라인(Sentences or Lines)

파이썬의 문장 구성

대입문(Assignment Statements)

  • 대입문(=)으로 변수값을 지정
  • 대입문은 오른쪽의 표현식 과 결과값이 저장되는 변수 로 구성
message = 'And now for something completely different'
n = 17
pi = 3.1415926535897931
>>> x = 0.6
>>> x = 3.9 * x * (1-x)
>>> print(x)
0.9359999999999999
>>> x = 3.9 * x * (1-x)
>>> print(x)
0.2336256000000002

표현식(Expressions)

숫자 표현식(Numeric Expressions)

컴퓨터 키보드에서 모든 수학 기호를 표현하기 어렵기 때문에 "computer-speak"를 사용해 연산을 수행한다.

연산자(operator) 연산(operation)
+ 더하기(addition)
- 빼기(subtraction)
* 곱하기(mulipication)
/ 나누기(division)
** 거듭제곱(power)
% 나누기(remainder)

연산 순서(Order of Evaluation)

파이썬이 어떤 연산을 먼저 수행하는지 알아야 한다. 이를 "연산 순위(operator precedence)" 라고 부른다.

  1. 괄호는 항상 우선(parenthesis)

  2. 거듭 제곱(power)

  3. 곱셈, 나눗셈, 나머지(multiplication)

  4. 덧셈, 뺄셈(addition)

  5. 왼쪽에서 오른쪽(left to right)

>>> x = 1 + 2 ** 3 / 4 * 5
>>> print(x)
11.0

자료형(Type)

파이썬에는 여러가지 데이터 타입들이 존재한다. 우리가 연산하고자 하는 데이터 타입에 따라 동일한 연산자를 사용하더라도 다른 결과를 가져온다.
예를 들어, 동일한 '+' 연산자를 사용하더라도 정수, 부동 소수점 등 숫자 타입의 변수에서는 덧셈으로 작용하고, 문자열 타입의 변수에서는 문자열을 이어주는 기능을 하게 된다.

ddd = 1 + 4
print(ddd)  # 5 가 출력된다.

eee = 'hello ' + ' there'
print(eee)  # hello there 가 출력된다.

eee = eee + 1   # 문자열 타입과 정수형 타입을 더하려 했기 때문에 에러가 발생한다.

만약, 타입이 서로 다른 변수에 대한 연산을 수행하면 파이썬은 오류를 발생시킨다. 이 때, type() 을 이용해 변수나 상수 객체의 타입을 확인할 수 있다.

>>> eee = 'hello' + 'there'
>>> eee = eee + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> type(eee)
<class 'str'>
>>> type('hello')
<class 'str'>
>>> type(1)
<class 'int'>

여러가지 숫자 타입(Several Types of Numbers)

주요 숫자 타입은 크게 두 가지가 있다.

  • 정수(Integer, int): 14, -2, 0, 1, 100, 401233
  • 부동소수점(Floating Point Numbers, float): -2.5 , 0.0, 98.6, 14.0
>>> xx = 1
>>> type (xx)
<class 'int'>
>>> temp = 98.6
>>> type(temp)
<class'float'>
>>> type(1)
<class 'int'>
>>> type(1.0)
<class'float'>

타입 변환(Type Conversions)

파이썬에는 타입을 변환할 수 있는 함수가 내재되어 있기 때문에 간단하게 타입을 변환할 수 있다. 변환시키고 싶은 타입 형식으로 감싸주면 타입이 바뀌게 된다.
예를 들어, i 라는 변수를 정수 타입으로 선언했다고 하자. 만약, i 변수를 부동소수점 타입으로 바꾸어 저장하고 싶다면 f = float( i ) 라고 적어주면 된다.

>>> print(float(99) + 100)
199.0
>>> i = 42
>>> type(i)
<class'int'>
>>> f = float(i)
>>> print(f)
42.0
>>> type(f)
<class'float'>

정수 나눗셈(Integer Division)

파이썬3에서의 정수 나눗셈의 결과는 부동소수점이다.
(notice. 파이썬2에서는 내림한 결과를 출력한다. 즉, 9/2를 수행한 결과는 4가 되고, 99/100은 0이 된다. 이는 파이썬3를 사용하는 가장 큰 이유 중 하나다.)

>>> print(10 / 2)
5.0
>>> print(9 / 2)
4.5
>>> print(99 / 100)
0.99
>>> print(10.0 / 2.0)
5.0
>>> print(99.0 / 100.0)
0.99

문자열 변환(String Conversions)

문자열을 숫자형으로 변환하기 위해 int(), float() 함수를 사용할 수 있다. 하지만 이를 사용할 때, 숫자 형태의 문자를 포함하지 않으면 에러를 발생한다.

>>> sval = '123'
>>> type(sval)
<class 'str'>
>>> print(sval + 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> ival = int(sval)
>>> type(ival)
<class 'int'>
>>> print(ival + 1)
124
>>> nsv = 'hello bob'
>>> niv = int(nsv)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hello bob'

유저 입력(User Input)

파이썬에서는 input() 함수를 이용해 사용자 입력을 받을 수 있다. 그리고 input() 함수는 문자열(string)을 리턴한다.
예를 들어, 다음의 코드가 있다고 하자.

nam = input('Who are you? ')
print('Welcome', nam)

Who are you? 가 출력되고, 'Patrick'을 입력하면 변수 nam에 해당 문자열이 저장된다. 실행 결과는 다음과 같다.
Who are you? Patrick
Welcome Patrick

유저 입력 변환(Converting User Input)

input()은 문자열을 리턴하기 때문에 숫자로 사용하기 위해서는 타입 변환 함수를 이용한 형변환이 필요하다.

inp = input('Europe floor?')
usf = int(inp) + 1
print('US floor', usf)

주석(Comments in Python)

컴퓨터에게 명령을 내리는 파이썬 코드 이외에 사람이 알아보도록 적는 것을 '주석' 이라고 한다. # 기호를 사용하여 주석 처리를 할 수 있으며, # 이후의 내용은 모두 무시된다.

'정상을향해 > Languages' 카테고리의 다른 글

상속 (Inheritance)  (0) 2013.11.11
얕은복사와 깊은복사  (0) 2013.11.11
멤버 이니셜라이저를 이용한 멤버 초기화  (0) 2013.11.11
C++에서의 파일분할  (7) 2013.11.10
참조자(Reference)와 함수  (0) 2013.11.10
[C] 포인터 : 배열명  (0) 2011.04.16