
내가 기본적으로 아는 파이썬 문법이라고는 변수 선언, print문, for문 등 기본적인 요소밖에 몰랐다.
파이썬 공부는 https://wikidocs.net/book/2 이 곳을 참고하였다.
내용을 쉽고 간단하게 설명해놓아서 후딱 기본 문법만 공부하기에는 좋은 글이다.
너무 기초적인 내용은 생략하거나 간략하게 설명하고 넘어가겠다.
파이썬을 시작하기에 앞서, 파이썬은 기본적으로 세미콜론(;)을 사용하지 않는다.
/ 나눗셈과 // 나눗셈은 다르다./ 나눗셈은 나누기를 하여 실수값을 알려주지만// 나눗셈은 몫을 정수형으로 알려준다.divmod() 함수를 사용하여 몫과 나머지를 한 번에 구할 수도 있다.
>>> divmod(50,8)
(6,2)
sqrt 함수를 이용한다.>>> import math
>>> math.sqrt(___)
파이썬은 자바, C언어와 다르게 변수를 선언할 때 기본적으로 변수형을 정의하지 않는다.
변수에 들어가는 값에 맞에 자동으로 변수형이 지정된다.
이 부분이 지금까지 java와 C언어만 공부했던 나에게 있어서는 꽤나 헷갈리는 부분이였다.
선언은 아래와 같이 변수에 값만 넣어주면 된다.
>>> watch = 10000
>>> lighter = 300
>>> r = 3.14
>>> a = 'pig'
문자열은 java와 마찬가지로 그냥 더해주면 이어진다.
list는 []로 묶어서 사용한다.>>> my_list = ['me', 'fath', 'mom', 'kong']
len() 함수를 이용해 list의 길이를 구할 수 있다.
인덱스를 이용해 list의 원소를 지정할 수 있다.
>>> my_list[2]
'mom'
파이썬도 java와 마찬가지로 리스트의 인덱스는 0부터 시작한다.
remove() 함수를 이용해 list의 값을 제거할 수 있다.
>>> my_list.removw('me')
한마디 할 때마다 동시통역해주는 방식을 인터프리트(interpret) 방식이라고 하고, 말하는 것을 처음부터 끝까지 듣고 나서 한꺼번에 바꿔주는 것을 컴파일(compile) 방식이라고 한다.
우리가 사용하는 파이썬은 인터프리터이다.
위의 블로그에는 따로 이에 대한 설명이 없어서 내가 추가하였다.
input() 함수를 이용한다. 변수에 바로 넣을 수 있고, 바로 형변환을 해줄 수 있다.>>> a = input()
>>> b = int(input())
print() 함수를 이용한다. "%d"등의 형식을 사용할 때는 printf()를 사용한다.>>>print('안녕')
파이썬의 print문은 기본적으로 줄 바꿈이 된다.
의도적으로 줄 바꿈을 하려면 \n을 사용한다.
lower() 메소드를 사용하면 영문 대문자를 소문자로 바꾼 값을 돌려준다.>>> 'Yes'.lower()
'yes'
대문자로 바꿀 때는 동일한 형태로 upper() 함수를 이용한다.
numOfDigits() 함수를 사용하면 양의 정수를 입력받아, 그 수가 몇 자리 숫자인지를 출력해준다.>>> numOfDigits(12345)
5
k**n을 사용한다.파이썬에 있어서 두 번째로 낯설었던 점은, for문이나 while문 등에 콜론(:)을 사용한다는 것이였다.
파이썬에서는 대괄호 대신 콜론(:)을 사용하여 절을 시작하고, 들여쓰기를 이용해 끝을 구분한다.
따라서 대괄호로 문장의 범위를 제어하는 java보다 들여쓰기에 주의해서 코드를 작성하도록 하자. python은 기본적으로 4칸 들여쓰기를 사용한다.
while 문의 형식은 다음과 같다.>>> while (조건) :
... 반복문
...
True를 사용하는데,또한 while 무한 루프에서 (1)을 사용하는 것과 헷갈릴 수 있으니 주의하자.
break를 사용해서 무한루프를 나올 수 있다.
기본적인 if문은 다음과 같다.
>>> if (조건1):
... 수행문1
>>> elif (조건2):
... 수행문2
>>> else (조건3):
... 수행문3
여기서 elif가 elseif나 else if와 다른 모양이니 주의하자.
java와 c언어와 프로시저, 파이썬을 모두 동시에 공부하고 있다보니 많이 헷갈린다..
여기서도 마찬가지로 조건문에서 두 값을 비교할 때는 ==을 사용한다.
조건문에서 문자열에 특정 문자가 있는지 확인할 때는 in 을 사용한다.
>>> if 'a' in 'banana':
... 조건문
(true임)
and나 or을 사용하여 조건을 여러 개 이어붙일 수 있다.for문의 기본 형태는 다음과 같다.
>>> for x in list:
... 실행문
여기서 x는 주로 임의의 변수이다.
list의 자리에는 실제 리스트가 들어가면, 리스트 안의 원소를 차례대로 반복한다.
range() 함수는 for문에서 자주 사용되는 함수이다.range(n, m)의 경우 n부터 m-1까지의 정수를 만들어준다.
(range(2,4)=[2,3]
이를 위 코드의 list 자리에 대신 작성해주면 된다.
range(n)의 경우 0부터 n-1까지의 정수를 의미한다.
match-case문은 switch-case문과 비슷한 역할을 한다.기본적인 형식은 다음과 같다.
>>> match 변수
... case 값1:
... ... 실행문1
... case 값2:
... ... 실행문2
match-case 문에는 더 특별한 기능이 있다.
case문에서 밑줄(_)은 아무 값이나 상관 없다는 뜻이다.
ex)
>>> match (n%3, n%5)
... case (0, 0):
... ... 실행문1
... case (0, _):
... ... 실행문2
... case (_, 0):
... ... 실행문3
... case _:
... ... 실행문4
위와 같이 편리하게 작성할 수 있다.
우리는 보통 조건문에서 else를 사용한다.
파이썬에서는 반복문에도 else를 사용할 수 있다.
다음 for 문에서는 리스트의 원소를 차례대로 출력하고, 모두 출력했다는 메시지를 출력한다.
>>> for x in [1, 2, 3, 4]:
... print(x)
... else:
... print("리스트의 원소를 모두 출력했어요")
...
for문 내에 if문을 사용하고 그 안에 break문을 사용하였을 때, break가 실행된다면 for문의 else문은 실행되지 않는다.while-else 문에서도 마찬가지이다.즉, 반복문의 else가 실행되는 경우는 break문이 없거나 break문이 실행되지 않는 것이다.
기본적인 형태는 for-else문과 동일하다.
>>> countdown = 5
>>> while countdown > 0:
... print(countdown)
... countdown -= 1
... if input() == '중단':
... break
... else:
... print('발사!')
...
파이썬에서 함수는 def를 이용하여 정의한다.
여기서도 반복문과 마찬가지로 대괄호가 아닌 콜론(:)에 의해 시작되는 것을 주의하자.
>>> def 함수명(매개변수):
... 함수
...
>>> def 함수명2():
... 함수2
함수에서 무언가를 반환하려면 마지막에
return 반환값을 입력하면 된다.
기본적으로 함수 내에서 정의된 변수는 지역변수로, 그 함수 밖으로 나가면 변수는 없어지는 것이다.
함수 밖에서 만들어진 변수는 전역변수라고 한다. 전역변수를 함수 안에서도 사용이 가능하다.
함수 안에서 만들어진 변수를 전역변수로 사용하고 싶으면, global로 변수를 명시해준다.
ex)
global a
lambda 형식은 함수를 이름 없이 한 줄에 정의하도록 해준다.
사용할 때는 아래와 같이 써준다.
lambda 매개변수 : 표현식
ex)
>>> (lambda x,y: x + y)(10, 20)
30
map() 함수는 함수와 리스트를 인자로 받는다. 그리고 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아준다.map(함수, 리스트)
ex)
>>> list(map(lambda x: x ** 2, range(5))) # 파이썬 2 및 파이썬 3
[0, 1, 4, 9, 16]
reduce() 함수의 형식은 위와 같고, 원소들을 누적적으로 함수에 적용시킨다.reduce(함수, 시퀀스)
ex)
>>> from functools import reduce
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
10
filter() 함수는 리스트에 들어있는 원소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 만들어준다.filter(함수, 리스트)
ex)
>>> list(filter(lambda x: x < 5, range(10)))
[0, 1, 2, 3, 4]