파이썬이란
: 네덜란드의 프로그래머 Guido van Rossum이 '읽기 쉬운 코드'에 중점을 두어 개발한 프로그래밍 언어이다.
- '읽기 쉽게' 만든 언어이기 때문에, 문법이 쉬어 초보자가 배우기 좋은 언어이다.
- 무료/오픈소스로 운영되고 커뮤니티가 크기 때문에 자연어처리, 머신러닝 등 직접 구현하기 어려운 기능들도 다른 개발자의 라이브러리를 이용해 쉽게 코드를 작성할 수 있다.
파이썬 설치
: 컴퓨터는 010000011과 같은 신호만 알아들을 수 있으므로 사람이 쓰는 파이썬 문법으로 된 글을 0과 1로 된 신호로 변환해주어야 한다. 이 '번역 패키지'를 설치하는 과정이다.
cmd 혹은 PowerShell 창에 python3을 입력해보고
python이 설치되어 있다면 다음과 같은 화면이 나올 것이다.
Python이 설치되어 있지 않다면 Microsoft Store에서 무료 구매 및 설치 혹은 직접 python.org에서 download받아 설치할 수 있다.
파이썬 기초 문법
변수 선언
- 자바스크립트와 다르게 새 변수를 만들 때 let을 쓰지 않고 출력할 때는 print()를 쓴다.
a = 3 # 3을 a에 넣는다
print(a)
b = a # b에 3을 넣는다.
print(b)
a = 5 # a에 5라는 새로운 값을 넣는다.
print(a, b) # 5 3
- 콘솔창에서는 print()함수를 쓰지 않고 변수 이름만 적고 실행해도 저장된 값을 볼 수 있다.
a = 3
a # 3이 출력된다.
자료형과 기본 연산
1) 숫자형
- 숫자를 값으로 가질 수 있으며, 정수, 실수 모두 가능
- 숫자 간에는 사칙연산이 가능하다. 몫과 나머지도 구할 수 있다.
a = 7
b = 2
a + b # 9
a - b # 5
a * b # 14
a / b # 3.5
a // b # 3 (몫)
a % b # 1 (나머지)
a ** b # 49 (거듭제곱)
a + 3 * b # 13 (여러 연산을 한 줄에 할 경우 사칙연산의 순서를 따른다.)
- 변수에 저장된 값에 연산을 한 후 다시 그 값을 같은 변수에 저장할 수 있다. 자바스크립트와 다르게 증감연산자(i++, i--등)은 없다.
a = 5
a = a + 3 # 5에 3을 더한 값을 다시 a에 저장
print(a) # 8
a += 1 # 줄여 쓸 수도 있다. 8에 1을 더해 9를 a에 저장. 사칙연산 다 가능하다.
2) 문자열
- 글씨를 따옴표로 감싸 문자열 자료형으로 정의할 수 있다.
- 작은따옴표(' ')와 큰 따옴표(" ") 모두 사용할 수 있고 짝이 맞아야 한다.
- 문자열에 따옴표가 포함될 경우, 다른 종류이 따옴표를 써서 문자열을 정의할 수 있다.
word1 = "jungle"
word2 = 'coding'
# 문자열에 따옴표가 포함된 경우 다른 종류의 따옴표 사용
mac = "McDonald's"
sentence = 'He said, "Hello!"'
- 따옴표로 감싸지 않으면 변수명으로 인식한다.
a = 1
b = "a"
c = a
print(a, b, c) # 1 "a" 1
d = x # x라는 변수가 정의되지 않았기 때문에 에러메시지가 나온다.
d = "x"
- 문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환한다.
first_name = "Harry"
last_name = "Potter"
first_name + last_name # HarryPotter
first_name + " " + last_name # Harry Potter
a = "3"
b = "5"
a + b # 35 문자열 간의 덧셈이기 때문에 앞뒤로 이어붙인 문자열이 반환된다.
a + 5 # 파이썬에서는 문자열과 숫자형은 더할 수 없다
a * 5 # 33333 a*5는 a+a+a+a+a과 같으므로 "3"이 5번 반복되는 문자열이 반환된다.
- 파이썬으로도 미리 정해져 있는 메소드를 이용하여 다양한 연산이 가능하다.
- 모든 알파벳을 대문자로 바꾸기 => upper()
myname = "jungle"
myname.upper() # JUNGLE
- 특정 문자를 기준으로 문자열을 나누고 싶은 경우 => split()
# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'
result = myemial.split('@') # ['test', 'gmail.com'] ('리스트'!)
result[0] # test (리스트의 첫 번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소)
result2 = result[1].split('.') # ['gmail', 'com']
result2[0] # gmail -> 우리가 알고 싶었던 것
result2[0] # com
# 한 줄로 쓸 수도 있다.
myemail.split('@')[1].split('.')[0]
- 특정 문자를 다른 문자로 바꾸기 => replace()
txt = '서울시-마포구-망원동'
result = txt.replace('-', '>') # 서울시>마포구>망원동
3) 불 자료형
- 참, 거짓을 나타내는 불 자료형
- 첫 글자가 대문자여야 한다.
x = True # 참
y = False # 거짓
# 소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러가 난다.
z = true # name 'true' is not defined
# 비교연산자
4 > 2 # True 크다
5 < 1 # False 작다
6 >= 5 # True 크거나 같다
4 <= 4 # True 작거나 같다
3 == 5 # False 같다
4 != 7 # True 같지 않다
- 불 자료형에는 논리연산자를 이용할 수 있다.
a = 4 > 2 # True
not a # False NOT 연산자로 참을 거짓으로, 거짓을 참으로 바꿔준다.
b = 2!=2 # False
a and b # False AND 연산자로 모두 참이어야 참을 반환한다.
a or b # True OR 연산자로 둘 중 하나만 참이면 참이다.
4) 리스트와 딕셔너리
- 파이썬의 리스트와 딕셔너리는 자바스크립트와 비슷하다.
a_list = []
a_list.append(1) # 리스트에 값을 넣는다.
a_list.append([2, 3]) # 리스트에 [2, 3]이라는 리스트를 다시 넣는다.
a_list # [1, [2, 3]]
len(a_list) # 2 리스트의 길이
a_list[0] # 1
a_list[1] # [2, 3]
a_list[1][0] # 2
a_dict = {}
a_dict = {'name':'bob', 'age':21}
a_dict['height'] = 178
# a_dict의 값은? {'name':'bob', 'age':21, 'height':178}
# a_dict['name']의 값은? 'bob'
# a_dict['age']의 값은? 21
# a_dict['height']의 값은? 178
people = [{'name':'bob', 'age':20}, {'name':'carry', 'age':38}]
# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'
person = {'name':'john', 'age':7}
people.append(person)
# people의 값은? [{'name':'bob', 'age':20}, {'name':'carry', 'age':38}, {'name':'john', 'age':7}]
# people[2]['name']의 값은? 'john'
- 리스트 간의 덧셈과 자연수 곱셈이 정의되어있다.
a = [3, 3, 1]
b = [5, 2]
a + b # [3, 3, 1, 5, 2]
a * 2 # [3, 3, 1, 3, 3, 1]
함수
- 함수의 정의
# 수학문제에서
f(X) = 2*x+3
y = f(2)
y의 값은? 7
# 참고: 자바스크립트에서는
function f(x){
return 2*x+3
}
# 파이썬에서는
def f(x):
return 2*x+3 # 중괄호 대신에 들여쓰기로 각 블록의 범위를 표시한다.
f(2) # 7
- 함수의 응용
def sum_all(a, b, c):
return a+b+c
def mul(a, b):
return a*b
result = sum_all(1, 2, 3) + mul(10, 10)
조건문
- if / else로 구성!
def oddeven(num): # oddeven이라는 이름의 함수를 정의한다. num을 변수로 받는다.
if num % 2 == 0: # num을 2로 나눈 나머지가 0이면
return True # True(참)을 반환한다.
else:
return False # False(거짓)을 반환한다.
result = oddeven(20) # True
def is_adult(age):
if age > 20:
print('성인입니다') # 조건이 참이면 성인입니다를 출력
else:
print('청소년이에요') # 조건이 거짓이면 청소년이에요를 출력
is_adult(30) # 성인입니다
- else if는 elif로 줄여쓴다.
def is_adult(age):
if age > 20:
print('성인입니다')
elif age >= 13:
print('청소년이에요')
else:
print('어린이네요!')
is_adult(30) # 성인입니다
반복문
파이썬에서의 반복문은, 리스트의 요소들을 하나씩 꺼내쓰는 형태이다.
# 예를 들어, 아래와 같이 리스트의 각 요소에 대해서 다음과 같이 반복문을 쓸 수 있다.
fruits = ['사과', '배', '감', '귤']
for fruit in fruits:
print(fruit)
# 사과
# 배
# 감
# 귤
# 자바스크립트 식으로 쓰면 아래처럼 나타낼 수 있다.
fruits = ['사과', '배', '감', '귤']
for i in range(len(fruits)):
fruit = fruits[i]
print(fruit)
# 사과
# 배
# 감
# 귤
파이썬 응용문제
Q1. 과일 갯수 세기 함수 만들기
과일 이름이 들어있는 리스트가 있을 때, 특정 과일이 몇 개 들어있는지 세는 함수
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
# 사과의 갯수 세기
# count = 0
# for fruit in fruits:
# if fruit == '사과'
# count += 1
# print(count)
# 사과가 아닌 다른 과일에 대해서도 쓸 수 있도록 함수 만들기
def count_fruits(target):
count = 0
for fruit in fruits:
if fruit == target:
count += 1
return count
subak_count = count_fruits('수박')
print(subak_count)
gam_count = count_fruits('감')
print(gam_count)
Q2. 사람의 나이 출력하기
각 사람의 이름과 나이가 든 딕셔너리가 각각의 요소인 리스트가 있을 때,
이름을 넣으면 나이를 돌려주는 함수를 만들어보라.
people = [{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27}]
def get_age(myname):
for person in people:
if person['name'] == myname:
return person['age']
return '해당하는 이름이 없습니다'
print(get_age('bob'))
print(get_age('kay'))
'알아두면쓸데있는신기한잡학사전 > 고군분투흔적들' 카테고리의 다른 글
[Web] Python - BeautifulSoup, find와 select를 사용한 웹 스크래핑 (0) | 2022.08.22 |
---|---|
[Web] Python - python package (0) | 2022.08.22 |
[Web] 서버 - 클라이언트 통신 (0) | 2022.08.22 |
[Web] FE - jQuery (0) | 2022.08.22 |
[Web] FE - JavaScript 조건문, 반복문 (0) | 2022.08.22 |