2. Python 기초

2.1. 기초 문법

2.1.1. 변수(variable)

  • 변수
    • 프로그램이 실행되는 동안 값을 저장하는 공간
    • 하나의 프로그램에서 여러 개의 변수를 만들어 사용할 수 있으며, 각 변수를 구분하기 위해 변수마다 이름을 붙여 관리함
    • 변수에는 언제든지 새로운 값을 저장할 수 있음
    • (정의) 변수 이름 = 값


  • 대입 연산자 =
    • 변수에 값을 저장할 때 사용하는 연산자로, 할당 연산자라고도 함
    • = 기호 오른쪽의 값을 = 기호 왼쪽의 변수에 저장한다는 의미
# 변수에 값을 저장하고 출력
age = 20
print(age)
20
# 변수에 저장된 값 변경
age = 21
print(age)
21
# 여러 변수에 값 대입
a = b = c = 7
print(a)
print(b)
print(c)
7
7
7
# 코드 한 줄에서 여러 개의 변수에 각각 다른 값을 한번에 대입할 수 있음
a, b, c = 7, 11, 19
print(a)
print(b)
print(c)
7
11
19
# 두 변수의 값 교환
a = 7
b = 11
temp = a
a = b
b = temp
print(a, b)
11 7
# Python에서는 패킹과 언패킹을 활용하여 임시변수 없이 두 변수의 값을 쉽게 교환할 수 있음
a = 7
b = 11
a, b = b, a
print(a, b)
11 7
  • 변수 이름 규칙
    • 변수가 어떤 용도로 쓰이는지 잘 설명하는 이름으로 만드는 것이 좋음
    • 첫 번째 글자는 문자 또는 _이어야 하고, 나머지 글자는 문자, 숫자, _이어야 함
    • 영문 대문자와 소문자를 구분함
    • 키워드(예약어; keyword)는 변수 이름으로 사용할 수 없음
      • 키워드 : 프로그래밍 언어에서 사용하기 위해 쓰임새를 미리 정해 놓은 단어
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']


2.1.2. 자료형(data type)

  • 기본 자료형
    • 단순한 값을 저장하는 자료형
    • (예) 정수(1,2,3,…), 부동소수점수(1.23, 3.14, …), 복소수(2+3j), 문자열(“Hello”), bool(True, False)
  • 구조적 자료형
    • 여러 개의 값을 담을 수 있는 자료형
    • (예) 리스트(list), 튜플(tuple), 세트(set), 딕셔너리(dictionary)
  • type() 함수를 이용하여 자료형을 확인할 수 있음
# 정수형
a = 20                      # 10진수
b = 0o34                    # 8진수
c = 0xA1                    # 16진수
d = 0b1110                  # 2진수
print(a, b, c, d)
print(type(a))
20 28 161 14
<class 'int'>
# 부동소수점수형
a = 3.14
b = 1.23e5                  # 지수 표현 방식
print(a, b)
print(type(a))
3.14 123000.0
<class 'float'>
# 문자열형
a = 'Hello'
b = "Python"
print(a, b)
print(type(a))
Hello Python
<class 'str'>
# bool형
a = 10>20
print(a)
print(type(a))
False
<class 'bool'>


2.1.3. 입력과 출력

  • 입력
    • 사용자로부터 데이터를 입력받기 위해 input() 함수를 이용함
    • input() 함수는 안내문을 출력한 후 사용자의 입력을 기다리며, 입력한 데이터를 문자열 형식으로 반환함
    • 변수 = input(안내문)
  • 출력
    • 데이터를 출력하기 위해 print() 함수를 이용함
    • 여러 개의 값을 출력하려면 ,로 구분한 값을 나열하면 됨
# 문자열 입력
#name = input("이름: ")
#age = input("나이: ")
#print(name, "나이:", age)
# 정수 형식의 문자열 입력
# input 함수를 통해서 입력받은 데이터는 문자열형임
# 따라서 int() 함수를 이용하여 정수 형식의 문자열을 정수로 변환해야 함
#a = int(input("정수: "))
#b = int(input("정수: "))
#print(a-b)
# 부동소수점 형식의 문자열 입력
# float() 함수를 이용하여 부동소수점수 형식의 문자열을 부동소수점수로 변환함
#minute = float(input("분 단위 시간: "))
#second = minute * 60
#print(second, "초")
# 문자열 출력
print("반갑습니다.")
score = 99
print("성적은", score, "입니다.")
반갑습니다.
성적은 99 입니다.
# print() 함수가 여러 개일 때는 다음 줄로 넘어가서 값을 출력함
a = 25
b = 42
print(a)
print(b)
25
42
# print() 함수가 여러 개일 때 다음 줄로 넘어가는 대신 공백이 출력되기를 원하면 end 매개변수를 공백으로 설정함
a = 25
b = 42
print(a, end=' ')
print(b)
25 42
  • f-문자열(f-string)
    • 문자열 앞에 소문자 f나 대문자 F를 붙이고, 문자열 안의 변수를 {}로 감싸서 표현하는 것
    • f-문자열을 이용하면 변수 값이 출력되는 형식을 지정할 수 있음
# f-문자열 사용
name = "홍길동"
age = 20
print(f"이름은 {name}이고, 나이는 {age}입니다.")
이름은 홍길동이고, 나이는 20입니다.
# f-문자열 출력 형식 지정
# 변수 이름 옆에 :을 작성한 다음 형식을 지정함
name = "홍길동"
age = 20
print(f"{name:5}, {age:3}")

a = 4
b = 3.14159265
print(f"20{a:02d}")                        # a 값을 두자리로 출력하되 앞의 빈곳은 0으로 채움
print(f"{b:.3f}")                          # b 값을 소수점 이하 세자리로 반올림하여 출력
홍길동  ,  20
2004
3.142
# 원의 넓이 구하기
#pi = 3.14159265
#radius = int(input("원의 반지름: "))
#area = pi * radius * radius
#print(f"원의 넓이: {area:.3f}")


2.1.4. 연산자

  • 연산(operation) : 덧셈, 뺄셈 등과 같이 일정한 규칙에 따라 계산하는 것


2.1.4.1. 산술 연산자

연산자 설명 예시 결과
+ 더하기 print(6+4) 10
- 빼기 print(6-4) 2
* 곱하기 print(6*4) 24
/ 나누기 print(6/4) 1.5
// 나눈 정수 몫 print(6//4) 1
% 나눈 나머지 print(6%4) 2
** 거듭제곱 print(6**4) 1296


2.1.4.2. 비교 연산자

  • 크기를 비교할 때 사용하는 연산자
  • 연산 결과는 참(True) 또는 거짓(False)으로 나타남
연산자 설명 예시 결과
== 같다 print(10==20) False
!= 같지 않다 print(10!=20) True
> 크다 print(10>20) False
< 작다 print(10<20) True
>= 크거나 같다 print(10>=20) False
<= 작거나 같다 print(10<=20) True


2.1.4.3. 논리 연산자

  • 참과 거짓의 논리 동작을 다루는 연산
  • 여러 조건을 조합할 때 주로 사용함
연산자 설명 예시 결과
and 왼쪽 식과 오른쪽 식 모두 참인 경우에만 True a=25
print(a>8 and a<60)
True
or 왼쪽 식과 오른쪽 식 중 하나라도 참인 경우에만 True a=70
print(a<8 or a>=60)
True
not 오른쪽 식이 참이면 False, 거짓이면 True a=20
print(not a==20)
False


2.1.4.4. 복합 대입 연산자

  • 연산한 값을 다시 대입하는 연산자
연산자 설명 예시 결과
+= 왼쪽 값에 오른쪽 값을 더한 결과를 다시 왼쪽에 대입 a, b = 2, 3
a += b
print(a)
5
-= 왼쪽 값에 오른쪽 값을 뺀 결과를 다시 왼쪽에 대입 a, b = 2, 3
a -= b
print(a)
-1
*= 왼쪽 값에 오른쪽 값을 곱한 결과를 다시 왼쪽에 대입 a, b = 2, 3
a *= b
print(a)
6
/= 왼쪽 값에 오른쪽 값을 나눈 결과를 다시 왼쪽에 대입 a, b = 3, 2
a /= b
print(a)
1.5
//= 왼쪽 값에 오른쪽 값을 나눈 몫을 다시 왼쪽에 대입 a, b = 7, 3
a //= b
print(a)
2
%= 왼쪽 값에 오른쪽 값을 나눈 나머지를 다시 왼쪽에 대입 a, b = 7, 3
a %= b
print(a)
1


2.1.4.5. 연산자 우선순위

  • 프로그래밍 언어는 연산자에 우선순위를 부여하여 우선순위가 높은 연산자를 먼저 계산함
  • 우선순위에 관계없이 연산의 순서를 정하려면 괄호 ()를 사용함
우선순위 연산자 설명
1 ** 거듭제곱 연산자
2 +, - 양수, 음수를 나타내는 단항 연산자
3 *, /, //, % 곱셈, 나눗셈, 나눈 몫, 나머지
4 +, - 덧셈, 뺄셈
5 <, <=, >, >= 비교 연산자
6 ==, != 동등 연산자
7 =, +=, -=, /=, //=, %=, **= 대입 연산자
8 not 논리 연산자
9 and 논리 연산자
10 or 논리 연산자
# 정수 3개의 평균 계산(틀림)
avg = 70 + 80 + 90 / 3
print(avg)
180.0
# 정수 3개의 평균 계산
avg = (70 + 80 + 90) / 3
print(avg)
80.0
# 길이 단위 변환
#_cm = int(input("센티미터 단위 길이: "))
#m = _cm // 100
#cm = _cm % 100
#print(f'{m}미터 {cm}센티미터')