파이썬
출력: print()
- 여러 개 출력 시 쉼표(,)로 구분 → 무조건 띄어쓰기가 하나 들어간다
- 띄어쓰기를 없애려면 sep옵션 추가
- 엔터 없이 출력하려면 end옵션 추가
print("Hello", "World!", sep="")
print("안녕하세요", end="")
문자열 함수
- len() : 문자열의 문자 개수를 반환
- count() : 찾을 문자열이 몇 개 들어있는지 개수 반환
- upper() : 문자열을 알파벳 대문자로 반환
- lower() : 문자열을 알파벳 소문자로 반환
- find, rfind() : 왼쪽, 오른쪽부터 해당 문자의 위치 찾음
- split() : 문자열을 공백이나 다른 문자로 나누어 리스트로 반환
리스트
- 리스트(list) : 자료 목록, 하나의 변수에 여러 값을 할당하는 자료형
- 리스트 연산 - 더하기, 반복, 길이 len()
리스트 함수
- sort()
- reverse()
- append(item)
- remove(item)
- insert(idx, item)
- pop(), pop(idx)
- del list_name[idx], del list_name[idx:idx]
- index(item)
- count(item)
자판기 프로그램
vending_machine = ['게토레이','게토레이','레쓰비','레쓰비','생수','생수','생수','이프로']
def check_machine():
print("남은 음료수: ", vending_machine)
print()
def is_drink(drink):
if drink in vending_machine:
return True
else:
return False
def add_drink(drink):
vending_machine.append(drink)
print("추가 완료")
vending_machine.sort()
def remove_drink(drink):
vending_machine.remove(drink)
print("\n사용자 종류를 입력하세요:\n1. 소비자\n2. 주인")
n = input()
if n=="1" or n=="소비자":
drink = input("마시고 싶은 음료? ")
if is_drink(drink):
print(f"{drink} 드릴게요")
remove_drink(drink)
check_machine()
else:
print(f"{drink} 지금 없네요")
else:
print("할 일 선택:\n1. 추가\n2. 삭제")
work = input()
if work=="추가" or work=="1":
check_machine()
drink = input("추가할 음료수? ")
add_drink(drink)
check_machine()
else:
check_machine()
drink = input("삭제할 음료수? ")
if is_drink(drink):
remove_drink(drink)
print("삭제 완료")
check_machine()
else:
print(f"{drink} 지금 없네요")
튜플(tuple)
- 읽기 전용 리스트, 리스트처럼 요소를 일렬로 저장
t1 = (10, 20, 30)
셋(set)
- 집합을 표현하는 자료형
- 중복된 문자는 한번만 저장된다
- 요소의 순서가 정해져 있지 않아서 매번 요소의 순서가 바뀐다
set1 = set()
set1 = {}
number1 = {1, 2, 3, 4, 5}
number2 = set([1, 1, 2, 2, 3, 4, 5])
apple = set('apple')
number1.add(6)
number1.remove(1)
number1.pop()
딕셔너리(dictionary)
dict1 = {}
dict1 = dict()
dict1[4] = 'd'
del(dict1[4])
dict1[100]
dict1.get(100)
dict1.keys()
dict1.values()
for k in dict1.keys():
print(dict1[k])
map()
- map(함수, 반복 가능한 객체) : 반복 가능한 객체를 함수에 넣어서 실행
def capitalize(str):
return str.upper()
result = map(capitalize, ["a","b","c"])
클래스
- 클래스는 자료형을 위한 일종의 템플릿
- 파이썬에서 객체 지향 프로그래밍을 사용하기 위한 방법
class 클래스이름:
pass
변수 = 클래스이름()
클래스 변수(필드, Field)
class Movie:
title="BossBaby"
movie1 = Movie()
print(movie1.title)
클래스함수(메소드, Method)
- 메소드 선언 시 첫 번째 매개변수로 self 필수 작성
- 클래스를 인스턴스화 하지 않고 호출해서 사용하는 경우에는 필요 없음
- 호출할 때 self에 값을 직접 넘겨주지 않음(자동 할당)
- self는 키워드가 아닌 식별자이므로 다른 이름을 사용할 수 있지만 개발자들의 약속
class Movie:
name: ''
def print_msg(msg):
print(msg)
def modify(self, movie):
self.name=movie
Movie.print_msg('print하기')
movie1 = Movie()
movie1.modify('name1')
생성자(Constructor)
- 클래스를 호출할 때 가장 먼저 실행되는 부분
- 생성자 정의는 메서드 정의와 동일하며 메서드 이름을 init 으로 지정한다
class Movie:
def __init__(self, title):
self.title = title
print("Hello I'm Movie Class")
movie1 = Movie("bossbaby")
print(movie1.title)
클래스 변수 vs 인스턴스 변수
- 인스턴스 변수 : 인스턴스 공간 내에 존재, 인스턴스를 생성해야 사용할 수 있다
- 클래스변수 : 클래스 공간 내에 존재, 메서드 안에서 클래스이름.변수명으로 접근
- 클래스변수는 인스턴스 변수와 다르게 모든 인스턴스가 다 같은 값을 갖는다
접근제어
- 파이썬은 기본이 public
- Public : 어디서나 접근 가능
- Private : 해당 클래스 내에서만 접근 가능.
- 해당 멤버 앞에 __(double underscore)를 붙여서 표시
- Protected : 보통은 해당 클래스와 하위 클래스 내에서만 접근가능이라는 의미지만 파이썬에서는 실제 제약되지는 않고 일종의 경고 표시로 사용
- 해당 멤버 앞에 _(single underscore)를 붙여서 표시
class Movie:
count = 0
def __init__(self, title, audience):
self.__title=title
slef._audience = audience
Movie.count += 1
def get_title(self):
return self.__title
movie1 = Movie("bossbaby", 100)
print(movie1.__title)
print(movie.get_title())
print(movie1._audience)
print(Movie.count)
클래스 상속
- 기존의 클래스가 가지고 있는 필드와 메서드를 그대로 물려받는 새로운 클래스를 만드는 것
- 자식 클래스를 선언할 때 소괄호로 부모 클래스 포함시키기
class Country:
def __init__(self):
self.name="나라이름"
def show(self):
print("국가 클래스의 메소드")
class Korea(Country):
def __init__(self,name):
self.name=name
def show_name(self):
print("국가 이름은:",self.name)
country=Korea("대한민국")
country.show()
country.show_name()
메서드 오버라이딩
- 부모 클래스의 메서드를 자식 클래스에서 재정의 하는 것
추상클래스
- 추상 메소드를 한 개 이상 가지고 있는 클래스
- 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제한다
- 추상클래스로는 객체를 생성할 수 없다
from abc import *
class Country(metaclass=ABCMeta):
def __init__(self, name):
self.__name = name
@abstractmethod
def show_detail(self):
pass
def get_name(self):
return self.__name
class Korea(Country):
def __init__(self, name):
super().__init__(name)
def show_detail(self):
print("나라 이름은 : ", self.get_name())
country = Korea("한국")
country.show_detail()
모듈
- 여러 기능이 뭉쳐진 하나의 .py파일
- 코드를 분리하고 공유하는 일
- 표준 모듈: Python 기본 내장
- 외부 모듈: 직접 만든 모듈
표준 모듈 - math 모듈
- 수학적 연산에 사용
- floor(n) : 내림 함수
- ceil(n) : 올림 함수
- fabs(n) : n의 절대값
- sqrt(n) : n의 제곱근
- factorial(n) : n의 팩토리얼
표준 모듈 - random 모듈
- 랜덤 값(난수) 생성 시 사용
- randint(a,b) : a부터 b까지 임의의 정수 리턴
- uniform(a,b) : a부터 b까지 임의의 실수 리턴
- random() : 0부터 1 사이 임의의 실수 리턴
- randrange(a,b,step) : a부터 b사이 step만큼 지정된 간격으로 임의의 정수 리턴
파일 입출력
- 파일 객체 = open(파일 이름, 파일 열기 모드)
- 파일 객체.close()
파일 열기 모드
- r : 파일 읽기
- w : 파일에 데이터 쓰기. 기존 내용이 모두 사라지고 새로 작성한다
- x : 새로운 파일 생성, 같은 이름이 존재하면 error
- a : 파일 뒷부분에 데이터 추가
- b : 파일을 바이너리 데이터로 본다
- t : 파일을 텍스트 데이터로 본다
f=open("text.txt", "w")
f.write("Hello World \n")
f.close()
f = open("test.txt", "r")
print(f.read())
f.close()
- read() : 파일의 내용 전체를 문자열로 반환
- readline() : 한줄씩 읽기
- readlines() : 파일의 모든 줄을 읽고, 각각의 줄을 요소로 갖는 리스트 반환
- seek(위치) : 해당하는 위치로 커서 이동
- tell() : 커서의 현재 위치 반환
f=open("test.txt","r")
print(f.read())
f.seek(0)
pirnt(f.tell())
context = f.readlines()
for line in context:
line = line.strip()
f.close()
f=open("test.txt", 'r')
while True:
line = f.readline()
if not line:
break
print(line)
f.close()
예외처리
- 에러가 발생할만한 부분을 예측하여 미리 예외 상황에 대한 처리를 하는 것
- Try 블록에서 발생한 예외를 except 블록에서 처리한다
발생 가능한 예외 종류
- IndexError : 리스트 인덱스 범위 오류
- ValueError : 부적절한 값을 가진 인자를 받았을 때 발생하는 에러
- ZeroDivisionError : 0으로 나눌 때 발생하는 오류
- NameError : 존재하지 않는 변수를 호출 할 때
- FileNotFoundError : 존재하지 않는 파일을 호출할 때
try:
num = int(input("숫자 입력: "))
except ValueError:
print("정수가 아님! 정수를 입력해주세요!")
except ValueError as msg:
print(msg)
try:
except:
else: