Python 기본 문법 정리
🧑‍💻 𝗣𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴/Python

Python 기본 문법 정리

파이썬 프로그래밍에 필요한 기초/기본 문법을 정리해보고자 합니다. 기초라고 하지만 자주 사용하고 복기 하지 않으면 잊는 경우가 대다수 입니다. 이번 기회를 통해 겸사겸사 복습하는 과정을 거쳐보겠습니다.

 

https://replit.com/languages/python3

 

Python Online Compiler & Interpreter

Write and run Python code using our Python online compiler & interpreter. You can build, share, and host applications right from your browser!

replit.com

위는 파이썬 코드가 실행 가능한 사이트 입니다. 포스팅을 따라 간단하게 따라해보세요.


 

 변수명 정하기 

변수명은 몇 가지의 규칙이 존재합니다.

1. 영어/숫자/언더스코어(_) 사용
2. 처음 문자는 영어/언더스코어(_) 만 가능
3. 대문자 소문자 구분
4. 특수문자 및 키워드 사용 금지

위의 규칙을 따라서 변수명을 지어야 합니다. 보통 변수명은 직관적으로 짓는 경우가 많습니다.

또한 개인 기호에 따라 Camel 표기법 혹은 Snake 표기법 따르면 됩니다.

 

Camel 표기법은 낙타의 등처럼 오르락내리락 하는 변수 패턴입니다.

예를 들면 numValue 와 같습니다.

 

Snake 표기법은 언더스코어를 사용해서 짓는 변수 패턴입니다.

예를 들면 num_value 와 같습니다.

 

 

 변수 선언 

# 한번에 선언
a, b, c = 1, 2, 3
print(a, b, c)

# 값 교환
a, b = 10, 20
print(a, b)
a, b = b, a
print(a, b)
1 2 3
10 20
20 10

변수 선언은 다른 프로그래밍 언어와 다르게 파이썬은 타입 없이 선언할 수 있습니다.

그 이유는 파이썬은 타입 추론을 이용하여 런타임 시에 변수의 타입을 결정 짓습니다. 컴파일 상황에서는 타입들이 결정되어 있지 않고 런타임 시에 결정되기 때문에 파이썬은 그냥 초기값 없이 변수만 덩그러이 선언할 수는 없습니다.

 

a = None

만약 변수를 초기값 없이 선언하고 싶다면 None 키워드를 이용하여 선언할 수 있습니다.

 

 

 변수 데이터 타입 

파이썬 데이터 타입의 종류는 총 6가지가 존재합니다.

  • Numeric Types  int / float / complex
  • Sequence Types  str / list / tuple 
  • Mapping Type  dict
  • Set Type  set
  • Boolean Type  bool
  • Binary Types  bytes / bytearray /memoryview

데이터 타입을 알고 싶다면 type() 함수를 사용합니다.

 

Numeric Types

# Numeric Types
int_ = 12234342524534634636682479
float_ = 12.33456789123456789  # 실수 타입은 8바이트 까지만 저장
complex_ = 1 + 2j

print(int_, float_, complex_)
print(type(int_), type(float_), type(complex_))
12234342524534634636682479 12.334567891234569 (1+2j)
<class 'int'> <class 'float'> <class 'complex'>
  • 실수는 8비트 까지 저장이 됩니다.

 

Sequence Types

# Sequence Types
str_ = "123"
list_ = [1, 2, 3]
tuple_ = (1, 2, 3)

print(str_, list_, tuple_)
print(type(str_))
print(type(list_))
print(type(tuple_))
123 [1, 2, 3] (1, 2, 3)
<class 'str'>
<class 'list'>
<class 'tuple'>
  • 문자열 타입은 문자열을 저장할 수 있습니다.
  • 리스트와 튜플은 여러가지 데이터 타입을 저장할 수 있습니다.
  • 튜플은 한번 쓰면 수정이 불가능 합니다.

 

Mapping Type

# Mapping Type
dict_ = {'key1': 'value1', 'key2': 2, 'key3': [1, 2, 3]}

print(dict_)
print(type(dict_))
{'key1': 'value1', 'key2': 2, 'key3': [1, 2, 3]}
<class 'dict'>
  • 딕셔너리를 이용하여 키와 쌍으로 자료를 매핑할 수 있습니다.

 

Set Type

# Set Type
set_ = set([1, 2, 3])

print(set_)
print(type(set_))
{1, 2, 3}
<class 'set'>
  • 수학에서 사용하는 집합 자료형을 파이썬에서도 사용할 수 있습니다.
  • set 데이터 타입은 중복이 불가능 합니다.
  • set() 함수를 통해서 sequence types 자료형집합 자료형으로 변경하여 사용합니다.

 

Boolean Type

# Boolean Type
bool_ = True

print(bool_)
print(type(bool_))
True
<class 'bool'>
  • True / False 데이터를 나타내는 자료형입니다.

 

 

 출력 방식 

a, b, c = 1, 2, 3

print(a, b, c) # 1
print(a, b, c, sep=', ') # 2
print(a, b, c, sep='') # 3
print(a, b, c, sep='\n') # 4
print(a, b, c, end=' ') # 5
# 1
1 2 3

# 2
1, 2, 3

# 3
123

# 4
1
2
3

# 5
1 2 3
  • print() 함수를 통해서 출력을 수행할 수 있습니다.
  • sep 속성을 통해 각 인자 사이에 넣을 문자열을 지정할 수 있습니다.
  • end 속성을 통해서 각 인자 이후에 나오는 문자열을 지정할 수 있습니다.
  • escape 문자를 넣는 것도 가능합니다. 만약, 개행 문자 (\n) 를 넣는다면 끝에 개행문자가 출력됩니다.

 

 

 입력 방식 

a = input("문자를 입력하세요") # Hello World !
print(a)
Hello World !
  • input() 함수로 문자를 입력 받을 수 있습니다.
  • 혹은 sys.stdin.readline() 을 통하여 문자를 입력받을 수 있습니다.
  • 입력 받은 데이터는 문자열로 반환됩니다.

https://yeomss.tistory.com/120?category=986077 

 

sys.stdin.readline() 사용 / 알고리즘 입력 받기

# 알고리즘 입력받기 # sys.stdin.readline() 입력 받기# 파이썬 입력 받기 # 파이썬 sys.stdin.readline() 입력 방법 주로 파이썬에선 알고리즘을 입력받을 때 input()  을 많이 씁니다. 하지만 input() 을 사..

yeomss.tistory.com

 

 

 분리해서 입력 받기 

a, b = input("숫자를 입력하시오: ").split()
print(a, b) # 2 3
print(a + b)
2 3
23
  • split() 함수로 문자를 띄어 입력 받을 수 있습니다.
  • split(문자) 함수의 인자를 이용하여 어떤 문자를 기준으로 입력을 받을 지 지정할 수 있습니다.
  • 인자를 비워두면 공백을 기준으로 입력을 받습니다.
  • input()문자로 입력받기 때문에 연산을 해도 5가 아닌 '2' + '3' 으로 '23'으로 연산이 됩니다.

 

 

 int() 이용하여 숫자 입력 받기 

a, b = int(input("숫자를 입력하시오: ")).split()

print(a, b) # 5 2
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b) # 몫
print(a % b) # 나머지
print(a ** b) # 거듭제곱
5 2
7
3
10
2.5
2
1
25

 

 

 

 조건문 

x = 9
if x > 0 and x < 10:  # 0 < x < 10
    print('10 보다 작은 자연수')


# and 연산 없이 -> python 만 가능 (c나 c++ 불가능)
x = 7
if 0 < x < 10:
    print('10 보다 작은 자연수')
10 보다 작은 자연수
10 보다 작은 자연수
  • 조건문은 if 키워드를 이용해서 사용할 수 있습니다.
  • 파이썬은 0 < x < 10 과 같이 수학적 조건식을 세울 수 있습니다.

 

 

 다중 조건문 

x = 53
if x >= 90:
    print('A')
elif x >= 80:
    print('B')
elif x >= 70:
    print('C')
elif x >= 60:
    print('D')
else:
    print('F')
F
  • [if - elif - else] 키워드를 이용하여 사용할 수 있습니다.
  • [if - elif - else]하나의 문장 구조기 때문에 위에서 아래로 이동하여 만약 조건에 걸리면 바로 끝납니다.
  • 그렇기 때문에 만약 elif 가 아닌 if 로 출력한다면 이후의 것들도 다 출력이 됩니다.
  • 즉, 위 코드에서 elif 를 if 로 수정한다면 A B C D F 가 다 출력이 됩니다.

 

 

 for 반복문 

for i in range(10):
	print(i)
0
1
2
3
4
5
6
7
8
9

 

for i in range(1, 11):
	print(i)
1
2
3
4
5
6
7
8
9
10

 

for i in range(1, 11, 2):
	print(i)
1
3
5
7
9
  • range() 함수를 이용하여 0 - 9 까지 반복문으로 출력할 수 있습니다.
  • range() 는 0부터 시작하여 해당 숫자 바로 전까지 숫자를 만들어냅니다.
  • range(시작 숫자, 끝 숫자 + 1, 스텝)

 

 

 for - else 반복문 

for i in range(1, 11):
    print(i)
    if i > 15:
        break
else:  # for 문이 정상적으로 종료되었을 시
    print("종료")
1
2
3
4
5
6
7
8
9
10
종료
  • 반복문이 정상적으로 종료되면 else 문이 출력된다.

 

 

 while 반복문 

i = 10
while i > 0:
	print(i)
	i = i - 1
10
9
8
7
6
5
4
3
2
1

 

i = 10
while i >= 0:
	print(i)
	i = i - 1
10
9
8
7
6
5
4
3
2
1
0
  • while 문을 통하여 특정 조건이 성립되면 계속해서 반복문을 돌릴 수 있습니다.
  • while 문으로 무한 루프를 돌릴 수 있습니다.

 

 

 중첩 반복문 

for i in range(5):
	for j in range(5):
    	print('*', end = ' ')
    print()
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * *

 

for i in range(5):
    for j in range(i + 1):
        print('*', end=' ')
    print()
* 
* * 
* * * 
* * * * 
* * * * *

 

for i in range(5):
    for j in range(5 - i):
        print('*', end=' ')
    print()
* * * * * 
* * * * 
* * * 
* * 
*
  • 반복문을 중첩해서 사용할 수 있습니다.

 

 

 소문자/대문자로 변경하기 

msg = 'It is Time'
print(msg)

# 대문자로
# msg 를 변화시키는 것은 아니고 그냥 결과만 출력
# 원본은 그대로 존재한다.
print(msg.upper())

# 소문자로
print(msg.lower())

tmp = msg.upper()
print(tmp)
It is Time
IT IS TIME
it is time
IT IS TIME
  • 소문자 → 대문자 : upper()
  • 대문자 → 소문자 : lower()

 

 

 문자열 내장 함수 : find() 

tmp = "IT IS TIME"

# find
# 해당 문자/문자열의 첫번째 인덱스 번호를 반환
# 대소문자 구분
print(tmp.find('T'))
print(tmp.find('T', 2))  # 두번쨰 인덱스 이후의 인덱스
1
6
  • 해당 문자의 인덱스를 반환합니다.
  • 특정 인덱스 이후의 인덱스를 반환하고 싶으면 인자를 추가해줘야 합니다.
  • 첫번째 예시는 IT에 해당하는 T 를 반환한것이며 두번쨰 예시는 TIME에 해당하는 T 를 반환한 것입니다.

 

 

 문자열 내장 함수 : count() 

tmp = "IT IS TIME"

# count
# 문자의 갯수를 출력
print(tmp.count('T'))
  • 해당 문제에서 인자의 갯수를 출력합니다.

 

 

 슬라이싱 

msg = "It is Time"

# 슬라이싱
# [start:end-1] 까지
print(msg[:2])
print(msg[3:5])  # 3,4 만 뽑아낸다.
It
is
  • 인덱스 값을 사용하여 문자열을 특정 범위까지 자릅니다.

 

 

 문자열 내장 함수 : len() 

msg = "It is Time"

# len
# 공백까지 포함해서 문자열의 길이를 알려준다.
print(len(msg))
10
  • 해당 문자열의 길이를 반환합니다. 공백까지 포함합니다.

 

 

 for문으로 문자열 접근 하기 

for i in range(len(msg)):
    print(msg[i], end=',')
I,t, ,i,s, ,T,i,m,e,

 

for x in msg:
    print(x, end=' ')
I t   i s   T i m e
  • for 문을 이용하여 문자에 접근할 수 있습니다.
  • 이는 리스트 또한 마찬가지 입니다.

 

 

 아스키 코드 관련 함수 

# 아스키 코드
# 문자 -> 아스키코드로
# ord()
tmp = 'AZ'
for x in tmp:
    print(ord(x))
print()


tmp = 'az'
for x in tmp:
    print(ord(x))
print()
    

# 아스키코드 -> 문자로
tmp = 65
print(chr(tmp))
65
90

97
122

A
  • 문자 → 아스키 코드 : ord() 
  • 아스키 코드 → 문자 : chr()

 

 

 리스트 합치기 

a = [1, 2, 3]
b = [3, 4, 5, 6]
c = a + b
print(c)
[1, 2, 3, 3, 4, 5, 6]
  • 리스트는 + 연산을 이용하여 합칠 수 있습니다.
  • 리스트는 집합과는 다르게 중복이 허용 가능하므로 같은 요소가 있더라도 중복으로 합칩니다.

 

 

 리스트 내장 함수 : append() 

a = [1, 2, 3, 4]
print(a)

a.append(5)
print(a)
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
  • append() 함수를 이용하여 리스트에 요소를 추가할 수 있습니다.
  • 요소는 리스트의 에 추가됩니다.

 

 

 리스트 내장 함수 : insert() 

 a = [1, 2, 3, 4]
print(a)

a.insert(1, 5)
print(a)
[1, 2, 3, 4]
[1, 5, 2, 3, 4]
  • insert(인덱스, 넣을 값) 을 이용하여 리스트 특정 인덱스 위치에 요소를 추가할 수 있습니다.

 

 

 리스트 내장 함수 : pop() 

a = ['a', 'b', 'c', 'd', 'e']
a.pop()
print(a)

a.pop(2)
print(a)
['a', 'b', 'c', 'd']
['a', 'b', 'd']
  • pop() 을 이용하여 리스트의 요소를 삭제할 수 있습니다.
  • 인자 없이 pop() 하면 끝의 요소가 삭제 됩니다.
  • 만약 pop(2) 같이 특정 인덱스를 값으로 인자를 넣고 수행하면 특정 인덱스의 값이 삭제됩니다.

 

 

 리스트 내장 함수 : remove() 

a = ['a', 'b', 'c', 'd', 'e']
print(a)

a.remove('a')
print(a)
['a', 'b', 'c', 'd', 'e']
['b', 'c', 'd', 'e']
  • remove() 를 이용하여 특정 요소의 값을 삭제할 수 있습니다.
  • 인덱스가 아니라 삭제할 값을 인자로 넣어야 합니다.

 

 

 리스트 내장 함수 : index() 

a = ['a', 'b', 'c', 'd', 'e']
print(a)

tmp = a.index('b')
print(tmp)
['a', 'b', 'c', 'd', 'e']
1
  • 특정 값의 인덱스를 리스트에서 반환합니다.

 

 

 리스트 내장 함수 : sum(), min(), max() 

a = [1, 5, 7, 2, 9]
print(a)

print(sum(a))
print(min(a))
print(max(a))
[1, 5, 7, 2, 9]
24
1
9
  • sum() → 리스트의 요소의 합을 반환합니다.
  • min() → 리스트 요소 중 최솟값을 반환합니다.
  • max() → 리스트 요소 중 최댓값을 반환합니다.

 

 

 리스트 내장 함수 : sort() 

a = [1, 5, 7, 2, 9]
print(a)

a.sort() # 오름차순
print(a)

a.sort(reverse=True) # 내림차순
print(a)
[1, 5, 7, 2, 9]
[1, 2, 5, 7, 9]
[9, 7, 5, 2, 1]
  • sort() 함수를 통해서 리스트를 정렬할 수 있습니다. 문자열에도 적용 가능 합니다.
  • reverse 옵션을 사용하면 내림차순으로 정렬할 수 있습니다. (True일 경우)

 

 

 enumerate() 함수 

a = [1, 5, 7, 2, 9]
print(a, end='\n\n')

# 1
for x in enumerate(a):
    print(x)
print()

# 2
for x in enumerate(a):
    print(x[0], x[1])
print()

# 3
for i, x in enumerate(a):
    print(i, x)
[1, 5, 7, 2, 9]

# 1
(0, 1)
(1, 5)
(2, 7)
(3, 2)
(4, 9)

# 2
0 1
1 5
2 7
3 2
4 9

# 3
0 1
1 5
2 7
3 2
4 9
  • enumerate() 함수는 키와 값의 쌍으로 튜플을 반환합니다.
  • 리스트가 들어간다면 키는 인덱스로 변환되어 값과 함께 반환이 됩니다.
  • 만약, 딕셔너리가 들어갔다면 딕셔너리와 키/값 쌍을 반환합니다.

 

 

 all() 함수 

a = [1, 5, 7, 2, 9]
print(a)

# all
# 만약 모두가 다 참이라면
if all(10 > x for x in a):
    print("YES")
else:
    print("NO")

# 하나라도 거짓된게 있다면
if all(10 < x for x in a):
    print("YES")
else:
    print("NO")
[1, 5, 7, 2, 9]
YES
NO
  • all()모두가 참일때 True를 반환합니다.
  • 만약 하나라도 거짓인 것이 있다면 False를 반환합니다.
  • 모든 요소를 두고 and 연산을 하는 것과 같습니다.
  • 리스트를 돌 때 for문을 사용합니다.

 

 

 any() 함수

a = [1, 5, 7, 2, 9, 11]
print(a)

# any
# 한번이라도 참이라는 것이 있다면
if any(10 > x for x in a):
    print("YES")
else:  # 만약 모든게 거짓이라면
    print('NO')

if any(11 < x for x in a):
    print("YES")
else:  # 만약 모든게 거짓이라면
    print('NO')
[1, 5, 7, 2, 9, 11]
YES
NO
  • any()하나라도 참인 것이 있다면 True를 반환합니다.
  • 만약 모두가 거짓이라면 False를 반환합니다.
  • 모든 요소를 두고 or 연산을 하는 것과 같습니다.

 

 

 1차원 리스트 초기화 및 접근 

a = [0] * 5
print(a)

for x in a:
    print(x)
[0, 0, 0, 0, 0]
0
0
0
0
0
  • 빈 리스트를 초기화하고 싶을 때 사용합니다.
  • for 문을 통해서 1차원 리스트에 접근 가능 합니다.

 

 

 2차원 리스트 초기화 및 접근 

a = [[0] * 3 for _ in range(2)]
print(a)

for x in a:
    for y in x:
        print(y, end=' ')
    print()
[[0, 0, 0], [0, 0, 0]]
0 0 0 
0 0 0
  • 2차원의 빈 리스트를 초기화할 때는 for 문을 사용하여 초기화 합니다.
  • 이중 for 문을 통해 2차원 리스트에 접근할 수 있습니다.

 

 

 함수 만들기 

def add(a, b):
    c = a + b
    return c  # 반환을 해준다.


a = add(3, 2)
print(a)
print(add(3, 4))


def add(a, b):
    c = a + b
    d = a - b
    return c, d  # 튜플이라는 자료구조로 반환된다.


a, b = add(3, 2)
print(a, b)
print(add(3, 4))  # 튜플 자료구조
5
7
5 1
(7, -1)
  • 파이썬에서 함수는 def 키워드를 통해서 만들 수 있습니다.
  • 함수 선언부는 다음과 같습니다.
    • def 함수명 (함수인자) :
  • 함수를 통해서 여러가지 데이터를 반환할 수 있습니다.
  • 함수는 main 스크립트 위에 존재해야합니다. 만약 밑에다 만들어 둔다면 인터프리터가 인식을 하지 못하여 not defined 오류가 발생합니다.

 

 

 lambda 함수 만들기 

plus_two = lambda x: x + 2
print(plus_two(1))
3
  • lambda 함수익명 함수라고 통칭합니다.
  • 람다 함수를 통해서 간단한 함수식을 만들 수 있습니다.

 

a = [1, 2, 3]


def plus_one1(x):
    return x + 1


plus_one2 = lambda x: x + 1
print(list(map(plus_one1, a)))
print(list(map(plus_one2, a)))
print(list(map(lambda x: x + 2, a)))
[2, 3, 4]
[2, 3, 4]
[3, 4, 5]
  • 람다 함수는 이렇듯 함수의 인자로 값을 넣을 때 편리합니다.
  • map() 함수, sorted() 함수와 자주 같이 씁니다.
  • 빅데이터 관련해서는 apply() 함수와 사용하기도 합니다.

 

 

 

 

# 파이썬 기초문법 # 파이썬 변수 # 파이썬 출력 # python 기초 # 파이썬 입력


 

728x90