[파이썬]Python기초 기본 문법 총정리 자료

[파이썬]Python기초 기본 문법 총정리 자료

파이썬 문자열 출력

print문을 사용하여 Hello World를 출력해 봅시다. 보통 언어를 처음 시작하면 일종의 기본 패턴 같은 행동이랄까요?? 언어를 배우게되는 책들을 보면 대부분 기본적으로 Hello World를 출력하는 예제를 코딩하게됩니다. print문을 단독으로 실행시 앞에 공백이 있으면 오류가 발생됩니다.

print("Hello World")

#print문 단독 실행히 앞자리에 빈자리가 있으면 오류 발생
 print("Hello World")

[실행결과]

아스타리스크(*)를 사용하여 문자열을 반복하여 출력할 수 있습니다.

파이썬 문자열 입력

사용자로부터 입력값을 받기위해 input문을 사용합니다. 자료형을 지정하지 않는 이상 기본적으로 문자열 형태로 입력값을 받아들입니다. 코딩 중에 실수로 엔터키를 눌렀을 경우 파이썬은 스스로 코드가 완성되지않았다고 판단되는 경우 …로 표시되며 이어서 코드를 작성할 수 있습니다. 

a = input("이름을 입력하세요:")
b = int(input("나이를 입력하세요:")

[실행결과]

파이썬 문자열 슬라이싱(Slicing) : 문자열 자르기

대괄호를 사용하여 문자열에 접근하기위해 인덱스번호를 사용합니다.  [-1]은 마지막의 문자를 반환합니다.

범위를 지정하여 출력이 하고 싶은 경우 [시작위치 인덱스:종료위치 인덱스] 처럼 사용합니다. 

a = "Hello World"
 
print (a)
print (a[0])
print(a[6])
print (a[0:6])
print(a[7:])
print (a[-1])
print(a[:4])

파이썬 문자열 들여쓰기

파이썬은 중괄호{ }를 사용하지 않습니다. 중괄호 대신 들여쓰기를 해야합니다. 들여쓰기를 할 때에도 주의가 필요합니다. 탭(Tab)키를 사용하여 들여쓰기를 하였을 경우에 계속 Tab키를 사용하여 들여쓰기를 하는 경우 문제가 되지는 않습니다. 그러나 스페이스바를 사용하여 들여쓰기를 하였을 경우 첫 시작 들여쓰기의 스페이스 개수에 무조건 맞추어야합니다. 빈공간을 2개를 사용하여 들여쓰기를 하였다면 다음 코드를 작성시에도 빈공간 2개로 들여쓰기를 해야하며, 그렇지 않으면 예외 오류가 발생됩니다.

들여쓰기를 다르게 하는 경우 오류가 발생합니다.

파이썬 주석처리

파이썬에서 주석은 해시기호(#)을 사용합니다. 여러 줄을 주석처리해야하는 경우 삼중 따옴표(“””)를 사용합니다.

파이썬 자료형

파이썬은 변수를 선언할 때 변수타입(자료형)을 지정하지 않습니다. 와 뭐 이런 귀찮음을 없애주는 언어가 있을까요? 

하지만 변수의 형변환을 할때는 필요합니다.

a = 20
b = "Hello"
c = 3.14

print a+c  //오류 발생됨
print (a+c)

[실행결과]

SyntaxError: Missing parentheses in call to “print”. Did you mean print(a+c)?

[실행결과]

변수의 타입을 확인하는 방법은 type키워드를 사용합니다.

a = [1,2,3,4,5]
b = 'a'
c = 10
d = "Hello"

[실행결과]

print(type(a))
<class 'list'>

print(type(b))
<class 'str'>

print(type(c))
<class 'int'>

print(type(d))
<class 'str'>

파이썬 문자열 포맷팅

파이썬의 문자열 포맷방식은 C언어와 사용방법이 같습니다.

%dint
%fdouble
%sstr

format()메소드를 사용하는 방법

a = "My name is {}".format("Hong gildong")
print(a)

#실행결과
My name is Hong gildong


b = 'temp {}'.format("1, 2, 3")
print(b)

#실행결과
temp 1, 2, 3.14

c = "{0} x {1} = {2}".format(1, 2, 1*2)
print(c)

#실행결과
1 x 2 = 2


d = "{} x {} = {}".format(1, 2, 1*2)
print(d)

#실행결과
1 x 2 = 2

파이썬 문자열 함수(split,join,replace,공백제거(rstrip,lstrip),lower,upper,index,count,len)

함수설명
upper()문자열 전체를 대문자로 변경
count(찾을 문자 혹은 문자열)문자열안에 찾을 글자 개수 반환
index(찾을 문자 혹은 문자열)찾을 글자의 위치 반환
len(문자열)문자열의 전체 길이를 반환
lower()문자열 전체를 소문자로 변경
strip()양쪽 공백 제거
lstrip()왼쪽 공백 제거
rstrip()오른쪽 공백 제거
replace(바꿔야 할 글자, 바꿀 글자)문자열 치환시 사용
split(구분자)문자열을 나누기 : 구분자를 기준으로 결과 반환, 구분자가 없으면 공백을 기준으로 하여 리스트로 반환
join()문자열 합치기

[예제 코드 및 실행결과]

a = "	Biden's transition moves ahead	"
a.count('a') 

#실행결과
3
a = "Biden's transition moves ahead"
len(a)

#실행결과
30
a = "	Biden's transition moves ahead	"
a.lstrip()

#실행결과
"Biden's transition moves ahead\t"
a = "	Biden's transition moves ahead	"
a.rstrip()

#실행결과
"\tBiden's transition moves ahead"
a = "	Biden's transition moves ahead	"
a.strip()

#실행결과
"Biden's transition moves ahead"
a = "Biden's transition moves ahead"
a.index('a') 

#실행결과
10
a = "Biden's transition moves ahead"
a.lower()

#실행결과
"biden's transition moves ahead"
a = "Biden's transition moves ahead"
a.upper()

#실행결과
"BIDEN'S TRANSITION MOVES AHEAD"
a = "Biden's transition moves ahead"
a.replace("Biden's","Trump")

#실행결과
'Trump transition moves ahead'
b ="10"
b.join("abcd")

#실행결과
'a10b10c10d'

#실행결과
",".join("abcdefghijk")
'a,b,c,d,e,f,g,h,i,j,k'
a = "Biden's transition moves ahead"
a.split(" ")

#실행결과
["Biden's", 'transition', 'moves', 'ahead']
a = "Biden's transition moves ahead"
list(a)

#실행결과
['B', 'i', 'd', 'e', 'n', "'", 's', ' ', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', ' ', 'm', 'o', 'v', 'e', 's', ' ', 'a', 'h', 'e', 'a', 'd']

파이썬 긴 코드 연결

긴 코드 작성시 연결해주기위해 혹은 가독성을 높이기 위해 역슬러시를 사용하여 줄바꿈 처리를 합니다.

a ="조 바이든 미국 민주당 대선 후보가 \ 
미국의 46대 대통령에 당선됐다고 CNN과 AP통신이 보도했습니다. \
CNN은 미국 동부시각으로 7일 오전 11시 25분, \
우리 시각으로는 오늘 새벽 1시 25분에 바이든 후보가 \
대통령에 당선됐다고 보도했습니다."

print(a)

#실행결과
조 바이든 미국 민주당 대선 후보가 미국의 46대 대통령에 당선됐다고 CNN과 AP통신이 보도했습니다. CNN은 미국 동부시각으로 7일 오전 11 시 25분, 우리 시각으로는 오늘 새벽 1시 25분에 바이든 후보가 대통령에 당선됐다고 보도했습니다.
a = 1000 + \
    2000 + \
    3000
print(a)

#실행결과
6000    
    

파이썬 긴 문자열을 여러줄로 할당하는 방법

따옴표 3개를 사용하여 묶어줍니다. 개행문자없어도 줄바꿈 자동 처리됩니다.

a ='''조 바이든 미국 민주당 대선 후보가 
미국의 46대 대통령에 당선됐다고 CNN과 AP통신이 보도했습니다.
CNN은 미국 동부시각으로 7일 오전 11시 25분,
우리 시각으로는 오늘 새벽 1시 25분에 바이든 후보가
대통령에 당선됐다고 보도했습니다.'''
print(a)

#실행결과
조 바이든 미국 민주당 대선 후보가
미국의 46대 대통령에 당선됐다고 CNN과 AP통신이 보도했습니다.
CNN은 미국 동부시각으로 7일 오전 11시 25분,
우리 시각으로는 오늘 새벽 1시 25분에 바이든 후보가
대통령에 당선됐다고 보도했습니다.

파이썬 이스케이프 

\n줄 바꿈
\t탭(Tab) 키 눌른 만큼 공백적용
\\\를 표시
\’‘를 표시
\”“를 표시

파이썬함수(메서드) 정의

파이썬(Python)은 def 키워드를 사용하여 함수를 정의합니다.

def plus(x, y):
    return x+y
result = plus(10,20)
print (result)

[실행결과]

구구단을 출력해주는 함수를 만들어봅시다.

>>> def gugudan(m):
...     for n in range(1, 10):
...             print(f'{m} * {n} = {m*n}')
...
...
#5단 만들기
>>> gugudan(5)
#실행결과
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45

return문을 사용하여 값 돌려주기

>>> def sum(x,y):
...     return x+y
...
>>> print(sum(10,20))
30

파이썬 익명함수 Lambda 사용 예제

a = lambda x: x+100
print(a(200))

#실행결과
300


a = lambda x: x+100
b = a(200)
c = a(300)
d = b + c
print(d)

#실행결과
700

map(함수, 리스트)

a = list(map(lambda x: x*2, (range(0, 10))))
print(a)

#실행결과
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

reduce(함수, 순서형 자료)

>>> from functools import reduce
>>> reduce(lambda x,y: x+y, [1,2,3,4,5])
15
>>>

filter(함수, 리스트)

>>> list(filter(lambda x: x<5, range(10)))
[0, 1, 2, 3, 4]
>>>

파이썬 조건문 if-elif-else

a = 70
b = 80
c = 90

if a > b:
	print("a는 b보다 크다")
elif a==b:
	print("a와 b는 같다")
else:
	print("a와 b보다 작다.")

#실행결과
a와 b보다 작다.
a = 70
b = 80

if a%b == 0:
...     print("true")
...elif a%b !=0:
...     print("false")
...

#실행결과
false

파이썬 반복문 : for , while

a = [1,2,3,4,5,6,7,8,9,10]

for item in a:
    if(item%2 == 0):
    	print("짝수 출력:", item)
        

#실행결과
짝수 출력: 2
짝수 출력: 4
짝수 출력: 6
짝수 출력: 8
짝수 출력: 10

break문을 사용하여 중간에 반복문을 빠져나올 수 있습니다.

a = [1,2,3,4,5,6,7,8,10]
for i in a:
	if i> 5:
    		print("정지")
        	break

파이썬 for문을 사용하여 구구단 프로그램 만들기

#f문자열을 사용하여 처리하기
a = 2
for i in range(1,10):
	print(f'{a} * {i} = { a*i }')

#실행결과
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
>>> a = 1
>>> while a <=20:
...     print(a)
...     a = a + 1
...

#실행결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

사용자가 입력한 값 만큼 반복하여 출력합니다.

a = int(input())

i = 0
while i < a:
    print(i)
    i += 1

파이썬 데이터 타입 알아보기

파이썬 패키지 생성 및 모듈 생성 그리고 불러오기 (Import)

파이썬 예외처리 : try, except

오류가 발생하였을 때 어떻게 처리할 것인가를 정의합니다.

>>> def utilplus(a,b):
...     try:
...             if a/b == 0:
...                     print("나눔 결과:",a/b)
...             else:
...                     print("나눈 값이 0 이 아님:",a/b)
...     except:
...             print("0으로 나눌수 없어요.")
...
>>> utilplus(10,2)
나눈 값이 0 이 아님: 5.0


>>> utilplus(10,0)
0으로 나눌수 없어요.
>>>

파이썬 클래스(class) 생성 및 생성자(__init__) 사용 방법

클래스를 만들때 파이썬은 생성자를 만들어야하는 경우 __init__를 사용하여 정의할 수 있습니다. 언더스코어(_) 두개를 앞뒤로 붙여서 초기화 합니다. 이것은 규칙입니다. 생성자는 클래스를 생성시 자동으로 실행되는 코드를 의미합니다.

1.파이썬 생성자 정의하기
>>> class Person:
... 	name = ""
... 	age = 0
...     def __init__(self,name, age):
...             self.name = name
...             self.age = age
...             print("생성자 호출됨:" + self.name + " age: "+ str(age))
        
>>> a = Person("홍길동",30)
생성자 호출됨:홍길동 age: 30
>>>
>>> a.name
'홍길동'

클래스 생성시 생성자의 인자(파라미터)를 전달하여 초기화 하는 경우 , 아래 코드 스니펫 처럼, name 과 age의 변수 선언을 하지 않고도 사용가능하며 접근할 수 있습니다.

>>> class Person:
...     def __init__(self,name, age):
...             self.name = name
...             self.age = age
...             print("생성자 호출됨:" + self.name + " age: "+ str(age))
            
>>> a = Person("홍길동",30)
생성자 호출됨:홍길동 age: 30
>>>
>>> a.name
'홍길동'
2.파이썬 클래스 내에 함수 정의하기

클래스 내에서 함수(메서드)를 정의할 때 첫번째 인자(parameter)로 self를 사용해야합니다. 규칙이라고 생각하면 편합니다. 생성자(Constructor) 역시 함수 임으로 동일하게 적용됩니다.

>>>
>>> class Person:
...     def __init__(self,name, age):
...             self.name = name
...             self.age = age
...             print("생성자 호출됨:" + self.name + " age: "+ str(age))
...     def whoAreYou(self):
...             return "나는 {}입니다".format(self.name)
...     def updatePerson(self, name, age):
...             self.name = name
...             self.age = age
...
>>> a = Person("홍길동",30)
생성자 호출됨:홍길동 age: 30
>>>
>>> a.whoAreYou()
'나는 홍길동입니다'
>>>
>>> a.updatePerson("아이유",24)
>>> a.whoAreYou()
'나는 아이유입니다'
>>>


카테고리의 다른 글
error: Content is protected !!