[Python]문법 총 정리(1) - 정수/실수/문자형 자료형, 리스트 & 튜플

Date:     Updated:

카테고리:

1. 파이썬의 기본 입출력

  • Python은 두 가지 입출력 방식을 제공한다.
  • 표준 입출력
    • 프로그램이 기본적으로 사용하는 입력장치(키보드)와 출력장치(모니터)를 통해 컴퓨터와 대화를 주고 받는 방식
    • 일반적으로 컴퓨터 프로그래밍을 작성할 때 사용
  • 파일 입출력
    • 하드 디스크에 파일 형태로 데이터를 저장하거나 읽는 방식
    • 프로그램이 꺼진 뒤에도 데이터가 저장된다.

1) print()를 이용한 표준 출력

  • print(값): 원하는 값을 출력
    • end 속성: 마지막 문자열을 출력하고 출력할 문자(Default: 줄바꿈 문자)
    • sep 속성: 여러 변수를 출력할 때, 각 값을 구분하기 위한 문자(Default: 공백 문자)
# Case 1
print("Hello World")
-> Hello World

# Case 2
data1 = 7
data2 = 5
data3 = 8
print(data1,data2,data3)
-> 7 5 8  ## default로 한칸씩 띄어쓰기 됨
print(data1,data2,data3, sep =",")
-> 7, 5, 8
print(data1,data2,data3, end = "[END]")
-> 7 5 8[END]

파이썬에서는 f-string을 사용하면 원하는 형태에 맞게 문자열을 출력할 수 있다.

score = 70
print(f"학생의 점수는 {score}점 입니다.")

2) input()을 이용한 표준 입력

  • input(): 키보드(표준 입력장치)로부터 문자열을 입력 받는다.
  • input(“문자열”): 문자열을 안내 메세지로서 출력하고, 키보드로 문자열을 입력 받는다.
# Case 1
name = input("당신의 이름은?")
print("입력된 값",name)
-> 당신의 이름은? ( 대답: meaningful)
-> 입력된 : meaningful

# Case 2
age = int(input("당신의 나이는? "))
-> 당신의 나이는? 20
print("당신의 나이:", age)
-> 당신의 나이: 20
print("15년 뒤 당신의 나이:", age + 15)
-> 15년뒤 당신의 나이: 35

2. 자료형

1) 수 자료형

  • 변수와 상수
    • 변수: 어떠한 값을 담을 수 있는 그릇이다.
    • 변수에 값을 넣을 때는 등호(=)를 사용
    • 상수: 특정한 수를 그대로 사용하면 그 자체로 상수가 된다.
# Case 1
a = 12
b = 5
print(a+b)
-> 17

# Case 2
a = 12
b = 7
a = 19
print(a+b)
-> 26
  • 정수 데이터
    • 양의 정수, 0, 음의 정수로 구성되며 소수점 이하 값이 없다.
    • Python은 컴퓨터의 메모리가 허용하는 한, 정수 데이터에 크기 제한이 없다.
  • 실수 데이터
    • 소수점 이하의 값을 포함
    • 실수 데이터와 정수 데이터 연산시 (정수-> 실수)로 형변환이 일어난다.
a = 4
b = 2.5
print(a*b)
-> 10.0

2) 사칙 연산

  • 사칙연산: +, -, *, /
  • 몫 연산자: //
  • 나머지 연산자: %
  • 제곱 연산자: **

3) 문자열 자료형

  • Python은 문자열 데이터를 표현하기 위한 문법을 제공한다.
  • 파이썬에서 문자열을 사용할 때는 작은 따옴표나 큰 따옴표를 사용한다.

  • 문자열 덧셈: 두 문자열을 연결
  • 이스케이프 문자
    • ": 큰따옴표를 출력한다.
    • ': 작은따옴표를 출력한다.
    • \n: 줄바꿈(new line) 문자를 출력한다.
    • \t: 탭(tab) 문자를 출력한다.
    • \: 백슬래시(backslash) 문자를 출력한다.

[Input]

print("철수: \"반갑습니다.\"")
print("영희: \'어떻게 인사할까?\'")
print("Hello World!\nHello Python!")
print("홍길동\t27세\tgildong@gmail.com\t프로그래머")
print("백슬래시 출력: \\")

[Output]

철수: "반갑습니다."
영희: '어떻게 인사할까?'
Hello World!
Hello Python!
홍길동	27	gildong@gmail.com	프로그래머
백슬래시 출력: \

4) 문자열 슬라이싱(Slicing)과 인덱싱(Indexing)

  • 슬라이싱은 두개의 인덱스로 구성되는데, 변수명[시작 인덱스: 끝 인덱스]의 형태를 가진다.

[Input]

a = "Hello World"

prefix = a[:4] # 인덱스 3까지의 접두사 가져오기
print(prefix)
suffix = a[2:] # 인덱스 2부터의 접미사 가져오기
print(suffix)

[Output]

Hell
llo World
  • 파이썬에서 문자열은 값을 변경할 수 없기 떄문에, 불변(immutable) 객체라고도 한다.
    a = "Hello World"
    # a[3] = 'b' # 오류 발생
    

3. 리스트 자료형과 튜플 자료형

1) 리스트 자료형

  • 대괄호 [] 안에 원소들을 쉼표로 구분하여 넣음
  • 리스트 안에는 서로 다른 자료형의 데이터가 들어갈 수 있음
    data = ["Hello", 7,0,5]
    print(data)
    -> ["Hello", 7,0,5]
    
evens = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

print(evens[3]) # 4번째 원소
-> 8
print(evens[0:5]) # 1번째 원소부터 5번째 원소까지
-> [2,4,6,8,10]
  • 리스트 덧셈: 리스트끼리 더할 수 있는데, 이떄는 단순히 두 리스트를 이어 붙인 결과가 반환된다.
    a = [1,2,3,4,5]
    b = [6,7,8,9,10]
    print(a+b)
    -> [1,2,3,4,5,6,7,8,9,10]
    
  • 리스트 중첩: 리스트는 다중(2중, 3중 등)으로 중첩하여 사용할 수 있다. ```python arr = [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15] ]

print(arr) # 리스트 전체 출력 -> [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]] print(arr[0][1]) # 1행 2열의 원소 출력 -> 2 print(arr[2][2]) # 3행 3열의 원소 출력 -> 13


- 문자열은 불변(immutable) 객체였지만, 리스트는 가변(mutable) 객체다.
```python
a = [5, 6, 7, 8, 9]

a[4] = 5
print(a)

a[0] = 1
print(a)

a[1:4] = [2, 3, 4] # 특정 구간을 한꺼번에 바꾸기
print(a)
  • 리스트는 자주 사용되는 몇 가지 메서드를 제공한다.
    • inster(삽입할 인덱스, 삽입할 원소): 리스트에 원소를 삽입한다.
    • append(삽입할 원소): 리스트의 마지막 위치에 원소를 삽입한다.
    • remove(삭제할 원소): 리스트에서 특정한 값을 가지는 원소를 삭제한다.
    • sort(): 리스트의 원소를 정렬한다.

[Input]

arr = [1, 3, 4] # 리스트 변수 초기화
print(arr)

arr.insert(1, 2) # 인덱스 1의 위치에 원소 2를 삽입
print(arr)

arr.append(5) # 마지막 위치에 5를 삽입
print(arr)

arr.remove(3) # 원소 3을 제거
print(arr)

arr.sort() # 오름차순 정렬
print(arr)

arr.sort(reverse=True) # 내림차순 정렬
print(arr)

[Output]

[1, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 4, 5]
[1, 2, 4, 5]
[5, 4, 2, 1]
  • 파이썬에서 2차원 이상의 리스트를 초기활할 때는 리스트 컴프리헨션(List Comprehension)을 사용한다.

[Input]

# 원소를 8개 포함하는 1차원 리스트 초기화
arr = [5] * 8
print(arr)

# 4 X 5 크기를 갖는 2차원 리스트 초기화
arr = [[0] * 5 for _ in range(4)]
print(arr)

# 4 X 5 크기를 갖는 2차원 리스트 초기화
arr = [[i] * 5 for i in range(4)]
print(arr)

# 4 X 5 크기를 갖는 2차원 리스트 초기화
arr = [[(i * 5) + j for j in range(5)] for i in range(4)]
print(arr)

[Output]

[5, 5, 5, 5, 5, 5, 5, 5]
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]]
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]

2) 튜플 자료형

  • 소괄호 ()를 사용한다.
  • 튜플의 값은 변할 수 없다.
  • 값을 변경되면 안 되는 경우, 튜플은 값을 변경할 수 없다.
  • 관행적으로, 각 데이터의 성질이 다를 수 있을 때 일반적으로 튜플을 사용한다.
    • 최단 경로 알고리즘에서 (비용, 노드 번호) 형태로 데이터를 묶어 사용하곤 한다.

[Input]

# 튜플은 리스트와 사용 방법이 유사하다.
a = (1, 2, 3, 4, 5)
print(a)
print(a[:3])
print(a * 2)

b = (6, 7, 8, 9, 10)
print(a + b) # 두 튜플(tuple)을 더한 값 출력

[Output]

(1, 2, 3, 4, 5)
(1, 2, 3)
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Reference

py 카테고리 내 다른 글 보러가기

댓글 남기기