Python 기본 문법 복습
*스스로 기본 문법 복습하는 게시물 입니다.*
왜 파이썬인가?
1. 무료입니다.
2. 가독성이 높아 쉽습니다.
3. 사용 분야가 무궁무진합니다.
파이참(PyCharm)에 대하여 - 파이썬 코딩 도구
프로그래밍을 도와주는 도구를 IDE(통합 개발 환경 : Intergrated Development Environment)라고 합니다. 파이참은 세계적으로 널리 사용되는 IDE 중 하나입니다. 이 게시글은 파이참을 이용한 공부 포스팅입니다.
간단한 파이썬 문법
1. print()
- 괄호 안의 데이터를 화면에 출력합니다.
- 문자는 큰 따옴표" 또는 작은 따옴표' 로 묶어 준 후 입력합니다. (프로그래밍 언어에 따라 구분하기도 합니다)
- 숫자는 그대로 넣습니다.
2. 변수의 개념 이해하기
a = "Hello World"
b = 3
c = -11
수학에서와 다르게, b는 3과 같다는 뜻이 아니라, 3이라는 데이터를 b라는 변수에 저장하는 것입니다.
변수 = 값(문자/숫자)
- 숫자를 저장하는 경우 : 그대로
- 문자를 저장하는 경우 : 큰 따옴표나 작은 따옴표로 묶어줍니다.
- 변수 이름은 자유롭게 설정 가능하나 숫자로 시작하거나 특수기호를 사용할 수 없습니다.
- 변수 이름에 공백을 사용할 수 없으므로 _를 대체해서 자주 사용합니다.
3. 주석
# 입력하는 내용은 주석으로 코드에 영향을 미치지 않고 메모 용도로 사용할 수 있습니다.
단축키 : 윈도우 - ctrl + / 맥 - command + /
4. 숫자 연산 기호
+ 더하기
- 빼기
* 곱하기
/ 실수 나누기 ( 결과값은 소수로 출력됨 )
% 나머지
// 정수 나누기 - 몫 ( 결과값은 정수로 출력됨 )
** 문자의 연산도 가능합니다. 이때 + 와 * 만 가능합니다.
+를 사용하면 - 두 문자가 공백 없이 그대로 붙습니다.
*를 사용하면 - 문자와 정수의 곱셈만 가능하고, 문자가 정수번 반복됩니다.
5. 자료형의 이해
정수 - int
실수 - float
문자 - str
참/거짓 - bool ex. True, False
리스트 - list
딕셔너리 - dict
6. 자료형 바꾸기
변수 = type(변수) - 변수를 type이라는 자료형으로 변환한다.
a = int(a) : a를 int로 변환
이 때, 변환 가능한 데이터는 자료형은 다르지만 표현이 같은 데이터여야 합니다.
형 변환 가능 |
형 변환 불가능 |
a = "1500" a = int(a) |
a = "천오백" a = int(a) |
7. 입력문 input() 이해하기
input을 이용하면 데이터를 입력받을 수 있습니다.
name = input("이름을 입력해주세요:")
age = input("나이를 입력해주세요:")
print("이름은", name)
print("나이는", age)
input의 기능은 1. 안내문을 출력하고, 2. 데이터를 입력 받습니다.
이때 입력받은 데이터는 문자형태로 저장됩니다.
따라서 입력받은 14라는 숫자는 문자 1과 4가 저장된 꼴입니다. 이는 형변환을 활용하면 연산하여 이용할 수 있습니다.
문자열 이해하기
문자열은 파이썬에서 가장 많이 사용되는 데이터 형식 중 하나입니다. 일반적으로 텍스트라고 생각하는 데이터를 문자열이라고 생각하면 됩니다. 결국 텍스트 데이터는 문자들의 나열이기 때문에 문자열이라는 이름을 보편적으로 사용합니다.
문자열 데이터는 index와 value 두가지 값으로 저장됩니다.
1. 문자열 인덱싱(indexing)
string = "~~"
string[0]
앞글자부터 0 인덱스이고, 음수를 활용한 마이너스 인덱싱도 가능한데 가장 마지막 글자가 -1이 됩니다.
범위를 넘어서 인덱싱하면 에러가 뜹니다.
2. 문자열 슬라이싱(slicing)
string[0:2]
string[11:]
슬라이싱 기본형: 변수이름[index1:index2]
-이때 주의할 점은 첫번째 숫자는 포함하고 두번째 숫자는 포함하지 않는 범위의 데이터가 슬라이싱 된다는 것입니다.
string[11:] - 11- 마지막
string[:7] - 처음-6
string[:] - 전부
3. 유용한 문자열 관련 함수
- 문자열 바꾸기 : replace()
string1 = "브이넥 라이트 다운 베스트"
print(string1.replace("라이트", "헤비"))
print(string1)
실행결과 - 브이넥 헤비 다운 베스트 / 브이넥 라이트 다운 베스트
replace() 함수는 바꾸고자 하는 문자열 다음에 . 을 찍고 사용합니다. 파이썬에서 . 은 앞에 있는 변수와 관련된 기능을 사용하는 개념입니다. 이때 string1의 값 자체가 바뀌는 것은 아닌데, 아예 바꿔 업데이트 해주고 싶다면 아래와 같이 명령해야 합니다.
string1 = string.replace("라이트", "헤비")
- 앞뒤 공백 제거하기 : strip()
string2 = " 25,990원 "
print(string2.strip())
print(string2)
string2 = string2.strip()
print(string2)
실행결과
25,990원
25,990원
25,990원
strip 함수의 경우 별도의 명령어, 입력어가 필요 없으므로 괄호 안을 비워놓습니다.
- 함수 체이닝(Chaining)
함수들을 이어서 쓸 수 있습니다.
# 앞 뒤 공백제거
string2 = string2.strip()
# , 삭제
string2 = string2.replace(",", "")
# 슬라이싱
string2 = string2[:-1]
# chaining
string2 = string.strip().replace(",", "")[:-1]
List in Python
여러개의 변수를 만드는 것 보다, 리스트 안에 저장하면 간편한 경우가 있습니다. 데이터 여러개를 쉽게 관리하기 위해서 리스트라는 개념의 데이터 구조를 활용합니다. 대괄효 [] 안에 데이터들을 , 로 구분하여 저장합니다.
저장된 데이터는 문자열 인덱싱과 같은 방법으로 하나씩 가져올 수 있습니다. 문자열과 마찬가지로 대활호 안에 index를 넣는 방법으로 사용합니다. 문자열과 리스트는 거의 비슷한 특징을 가지고 있습니다. (일부 프로그래밍 언어에서 문자열은 문자의 리스트로 구현되어 있습니다.)
1. 리스트의 슬라이싱(slicing)
인덱싱과 마찬가지로 리스트에서도 슬라이싱 방법을 그대로 사용할 수 있습니다.
문자열 슬라이싱의 결과가 문자열 이듯, 리스트 슬라이싱의 결과는 작은 리스트입니다.
2. 리스트의 추가와 제거
리스트는 여러가지 데이터를 저장하고 있기 때문에 리스트에 데이터를 추가하거나 리스트에 있는 데이터를 삭제도 가능합니다.
# 리스트에 추가
list.append("value123")
# 리스트에서 삭제
del list[1]
append() 함수를 사용하면 리스트에 괄호 안의 데이터를 맨 뒤에 추가 할 수 있습니다.
데이터 삭제는 del 명령어를 통해서 하고, 다른 함수들과 다르게 괄호 안의 데이터를 삭제하는 것이 아니라 공백 이후의 데이터를 삭제합니다.
3. 문자열과 리스트의 길이 (Length)
len(list)
len(리스트) - 리스트의 길이를 반환, 포함하고 있는 데이터 수
len(문자열) - 텍스트 데이터의 글자 수
4. 리스트에 변수를 포함시킬 수 있습니다.
myname = "홍길동"
birth = 920318
addr = "서울 마포 공덕"
person_info = [myname, birth, addr, "남자", 1100]
print(person_info[0])
print(person_info[1])
print(person_info[4])
* 딕셔너리 : 리스트와 유사하게 온갖 데이터를 이름표로 담아두는 표와 같은 개념입니다.
myname = "홍길동"
birth = 920318
addr = "서울 마포 공덕"
user_info = {
"name": myname,
"birth": birth,
"address": addr,
"gender": "남자",
"point": 1100
}
print(user_info["name"])
print(user_info["birth"])
print(user_info["point"])
위 코드와 출력 결과가 같습니다.
5. list 내용물로 list, dictionary 넣기 : 가능합니다.
person_info2 = ["박지성", 810225, "맨체스터", "남자", 13000]
user_list = [person_info, person_info2, user_info]
반복문
for i in range(1, 10):
print(i)
이때 문자열과 마찬가지로 범위를 설정 할 때 앞의 숫자는 포함하고 뒤에 있는 숫자는 포함하지 않습니다. 결국 총 9회 반복됩니다.
# 숫자를 하나만 입력하면, 0부터 10까지.
for i in range(10):
# 숫자를 세 개 입력하면, 증가시키는 범위를 의미.
for i in range(1, 10, 2):
리스트는 주로 반복문과 함께 사용하기 때문에 range() 없이 리스트를 직접 활용할 수 있는 반복문 사용법도 있습니다.
players = ["황의조", "황희찬", "구자철", "이재성", "기성용"]
print("2019년 아시안컵 출전명단:")
for p in players:
print(p)
위 코드에서는 임시 변수를 리스트의 앞글자 약자를 사용하고 in range()의 형태가 아니라 in 리스트의 형태를 사용했습니다. 반복되는 출력문이 player[i]가 아닌 임시변수 p를 출력하고 있습니다. in 리스트 형식은 리스트에 있는 값들을 하나씩 가져오면서 반복하게 됩니다.
in range() 방법 |
in 리스트 방법 |
|
임시변수 |
숫자의 범위가 들어감 |
리스트의 값이 들어감 |
사용 |
순서(index)가 중요한 경우 |
값(value)이 중요한 경우 |
파일 읽기, 쓰기
* 쓰기 : 파일을 만드는 작업
f = open("test.csv, "w")
f.write("이름, 주소\n")
f.write("최소영, 연남동\n")
f.write("이종환, 의정부\n")
f.close()
그러면 같은 디렉토리에 test.csv 라는 파일이 생기고 그 파일 안에는 표가 저장됩니다.
* 읽기 : 파일을 불러오는 작업
f = open("test.csv", "r")
line = f.readline()
print(line)
line = f.readline()
print(line)
line = f.readline()
print(line)
f.close()
저장된 값들이 차례로 출력됩니다.
** 혼자 해보기 : 전화번호부 만들기
phonebook = []
user1_info = {"name": "박지성", "phone": 1040281234}
user2_info = {"name": "이청용", "phone": 1012344321}
user3_info = {"name": "손흥민", "phone": 1007070202}
phonebook = [user1_info, user2_info,user3_info]
# 전체 출력하기
print(phonebook)
# 일부만 출력하기
print(phonebook[1])
phonebook은 리스트 자료형입니다. phonebook 안에 넣을 수 있는 자료형은 딕셔너리, 리스트, 문자열, 숫자 ... 가능합니다. phonebook의 첫번째 값만 출력하려면 print(phonebook[0])을 사용하면 됩니다.
phonebook = [
{"name": "박지성", "phone": 1040281234},
{"name": "이청용", "phone": 1012344321},
{"name": "손흥민", "phone": 1007070202}
]
# 전체 출력하기
print(phonebook)
# 일부만 출력하기
print(phonebook[1])
위 코드도 결과가 같습니다.