HTML(뼈대), CSS(꾸미기) , Javascript(움직이기)를 만들어놔도 누군가가 요청했을 때 그것을 전달하는 역할을 하는 것이 '서버'이다. Python이라고 하는 프로그래밍 언어로 서버를 만들어 볼 것이다.
출처 : 스파르타코딩클럽
JavaScript는 중괄호를 사용하는 반면 Python 언어는 들여 쓰기를 사용한다.
Python은 Javascript의 'console.log'처럼 출력하는 'print()'가 있다.
print('hello world') # hello world
print('hi') # hi
Python은 변수 선언이 따로 없다.
a = 2
print(a) # 2
a = 2
a # 2
a = 3
a = a + 1
print(a) # 4
a = 3
a = a + 1
b = a
print(a,b) # 4 4 (여러 값을 한번에 출력할 수 있다.)
c = a*b
print(a,b,c) # 4 4 16
자료형은 변수에 저장할 수 있는 값과 그 형태를 말한다.
a = 3.1
b = 2
a = 3.1
b = 2
print(a+b) # 5.1
print(a-b) # 1.1
print(a*b) # 6.2
print(a/b) # 1.55
print(a//b) # 1 (몫)
print(a%b) # 1.1 (나머지)
print(a**b) # 9.61 (거듭제곱)
print(a+2*b) # 7.1 (여러 연산을 한 줄에 할 경우 사칙연산의 순서를 따른다.)
a = 2
a = a + 2
-> a += 2 (a에 2를 더한 a+2를 a에 저장)
print(a) # 4
따옴표로 감싸면 문자로 취급되어 문자열 자료로 정의된다.
a = '대한'
b = '민국'
print(a+b) # 대한민국
(문자형 자료인 값을 이어붙인 문자열을 출력)
print(a+' '+b) # 대한 민국
(띄어쓰기도 따옴표로 문자형 자료라고 정의했기 때문에 문자열 자료로 출력된다.)
a = 1
b = 'a'
c = a
print(a, b, c) # 1 a(변수 a가 아니라 문자열 a) 1
(따옴표로 감싸지 않으면 문자형 자료로 인식하지 않고 다른 변수(변수명)으로 인식한다.)
d = x
d = "x" # NameError: name 'x' is not defined
(x라는 변수가 정의되지 않았기 때문에 에러메시지가 나온다.)
a = '3'
b = '5'
print(a+b) # 35
(문자형 자료 간의 덧셈이기 때문에 앞뒤로 이어붙인 문자열이 반환된다.)
a = 7
b = '3'
print(a+b) # TypeError: unsupported operand type(s) for +: 'int' and 'str'
(Javascript는 문자형 자료와 숫자형 자료를 더하면 숫자를 문자열로 바꾼 후 더해주지만 Python은 숫자형 자료와 문자형 자료는 연산이 불가하다.)
a = str(7) # 문자열을 출력해줌.
b = '3'
print(a+b) # 73
a = '3'
print(a*5) # 33333
(a의 자료가 문자형이기 때문에 3이 5번 반복되는 문자열이 반환된다.)
1) 문자열 연결 연산(문자열 + 문자열)
a = '안녕'
b = '하세요'
print(a+b) # 안녕하세요
2) 문자 선택 연산 (문자열[index] : 인덱싱)
a = '안녕'
b = '하세요'
print(a+b[0]) # 안녕하
3) 문자열의 길이 (len())
a = '안녕'
b = '하세요'
print(len(a+b[0])) # 3
4) 문자열의 일부 잘라내기 (슬라이싱)
f="abcdefghijklmnopqrstuvwxyz"
f[4:15] # efghijklmno f[4]부터 f[15] 전까지, 총 15-4=11개!
f[8:] # ijklmnopqrstuvwxyz f[8]부터 끝까지, 앞의 8개 빼고!
f[:7] # abcdefg 시작부터 f[7] 전까지, 앞의 7개!
f[:] # abcdefghijklmnopqrstuvwxyz 처음부터 끝까지
5) 특정 문자열로 자르기 (split('문자열'))
# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'
result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :))
# '@'를 기준으로 두 개가 되었으니 myemail은 리스트가 됨
result[0] # test (리스트의 첫번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소
result2 = result[1].split('.') # ['gmail','com']
result2[0] # gmail -> 우리가 알고 싶었던 것
result2[1] # com
myemail = 'abc@sparta.co'
# 한 줄로 한 번에!
domain = myemail.split('@')[1].split('.')[0]
print(domain) # ['sparta', 'co']
6) 특정 문자를 다른 문자로 바꾸기
txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'
Python의 리스트와 딕셔너리는 Javascript와 비슷하다.
a_list = []
빈 리스트를 선언하고 나중에 값을 지정해줘도 된다.
변수 이름은 아무거나 가능하고 자료값이 리스트형일 경우 '[]'를 쓴다.
b_list=[1,2,'사과',3,False]
print(b_list[0]) # 1
print(b_list[2]) # 사과
print(b_list) # [1, 2, '사과', 3, False]
b_list.append(4)
print(b_list) # [1, 2, '사과', 3, 4]
b_list.append([5,6])
print(b_list) # [1, 2, '사과', 3, 4, [5,6]]
(리스트형 자료를 요소로 넣을 수 있다.)
b_list = [1, 2, '사과', 3, 4, [5,6]]
(리스트형 자료를 요소로 가질 수 있다.)
print(len(b_list)) # 6
print(b_list[5]) # [5,6]
print(b_list[5][1]) # 6
c_list = [7,8,9]
b_list.append(c_list)
print(b_list) // [1, 2, '사과', 3, 4, [5, 6], [7, 8, 9]]
print(len(b_list)) # 7
a = [1, 3, 2, 4]
print(a[3]) # 4
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)
print(a[-2]) # 2
a_ = [2, 5, 3]
a.sort()
print(a) # [2, 3, 5]
a.sort(reverse=True)
print(a) # [5, 3, 2]
a = [2, 1, 4, "2", 6]
print(1 in a) # True
print("1" in a) # False
print(0 not in a) # True
a_dict = {}
빈 딕셔너리를 선언하고 나중에 값을 지정해줘도 된다.
변수 이름은 아무거나 가능하고 자료값이 딕셔너리형일 경우 '{}'를 쓴다.
person = {"name":"Bob", "age": 21}
print(person[0]) # 0이라는 key가 없으므로 KeyError 발생!
person = {"name":"Bob", "age": 21}
person["name"] = "Robert"
print(person) # {'name': 'Robert', 'age': 21}
person["height"] = 174.8
print(person) # {'name': 'Robert', 'age': 21, 'height': 174.8}
person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"]) # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"]) # 92
person = {"name":"Bob", "age": 21}
result = ('height' in a_dict)
print(result) # False
b_dict = [
{'name':'영수','age':27},
{'name':'철수','age':15},
{'name':'영희','age':20}
]
print(b_dict[0]['name']) # 영수
print(b_dict[1]['age']) # 15
b_dict[1]['age'] = 25
print(b_dict[1]['age']) # 25
변수이기 때문에 언제든 값을 변경할 수 있다.
b_dict[0]['height'] = 170
print(b_dict) // [{'name': '영수', 'age': 27, 'height': 170},
{'name': '철수', 'age': 15},
{'name': '영희', 'age': 20}]
c_dict = {'name': '미래', 'age': 22, 'height': 165}
b_dict.append(c_dict)
print(b_dict) // [{'name': '영수', 'age': 27, 'height': 170},
{'name': '철수', 'age': 15},
{'name': '영희', 'age': 20},
{'name': '미래', 'age': 22, 'height': 165}]
print(b_dict[3]['name']) # 미래
people = [
{'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
{'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
{'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
{'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]
smith의 science 점수
# print(people[2]['score']['science'])
print(len(b_dict)) # 4
x = True # 참 // 자바스크립트와 다르게 첫 글자가 대문자
y = False # 거짓
z = true # name 'true' is not defined - 소문자로 쓰면 변수명이라고 인식해서 에러가 난다.
True = 1 # True/False는 변수명으로 쓸 수 없다.
4 > 2 # True 크다
5 < 1 # False 작다
6 >= 5 # True 크거나 같다
4 <= 4 # True 작거나 같다
3 == 5 # False 같다
a = 4 > 2 # True
not a # False
4 != 7 # True 같지 않다 // !, NOT 연산자 참을 거짓으로, 거짓을 참으로 바꿔준다.
a and b # False (&& 아님) AND 연산자로 모두 참이어야 참을 반환한다.
a or b # True (|| 아님) OR 연산자로 둘 중 하나만 참이면 참이다.
age = 25
if age > 20:
print("성인입니다")
else:
print("청소년입니다")
# 성인입니다 (age 변수의 값에 따라서 print되는 값이 달라진다.)
money = 5000
if money > 3800: # 조건에는 불 자료형이 들어간다. money > 3800은 True
print("택시 타자!")
# 택시 타자!
def person(age) :
if age > 20:
print("성인입니다")
else:
print("청소년입니다")
person(15) # 청소년입니다
def person(age) :
if age > 20:
print("성인입니다")
elif age >= 13:
print("청소년입니다")
else:
print("어린이입니다")
person(10) # 어린이입니다
money = 400
if money > 3800:
print("택시 타자!")
elif money > 1200:
print('버스를 타자!')
elif money > 600:
print('물 사먹고 걸어가자')
else:
print("그냥 걸어가자...")
print("그럼 뭘 타지?") # 어디까지 구문에 포함되는지를 들여쓰기로 구분한다. print("그럼 뭘 타지?")는 이 조건문에 포함되지 않기 때문에 어쨌든 출력된다.
# 그냥 걸어가자... 그럼 뭘 타지?
반복할 것이 있고 리스트의 요소들을 하나씩 빼서 실행하는 것
fruits = ['사과','배','감','귤']
for fruit in fruits:
print(fruit)
# 사과
# 배
# 감
# 귤
ages = [5,10,13,23,25,9]
for a in ages # ages의 리스트에서 요소를 하나씩 가져와서 a에 넣고 그 a를 밑에서 갖다 쓰자.
if a>20:
print("성인입니다") # 자동으로 들여쓰기가 더 들어감 = 위의 내용물이다.
else:
print("청소년입니다")
# 청소년입니다
# 청소년입니다
# 청소년입니다
# 성인입니다
# 성인입니다
# 청소년입니다
people = [{'name': '영수', 'age': 27},
{'name': '철수', 'age': 15},
{'name': '영희', 'age': 20},
{'name': '미래', 'age': 22}]
for person in people :
name = person['name']
age = person['age']
print(name,age)
# 영수 27 철수 15 영희 20 미래 22
for person in people:
if person['age'] > 20:
print(person['name'])
# 영수 미래
과일 수 세기
fruits = ['사과','배','감','귤',배','사과',배','귤','사과','귤','감','사과','감']
def how_many(a):
count = 0
for fruit in fruits:
if fruit == a:
count += 1
return count
print(how_many('사과')) # 4
사람 나이 출력
people = [{'name': '영수', 'age': 27},
{'name': '철수', 'age': 15},
{'name': '영희', 'age': 20},
{'name': '미래', 'age': 22}]
def my_age(a):
for person in people:
if person['name'] == a:
return person['age']
print(my_age('영희')) # 20
print(my_age('서현')) # None
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
for i, person in enumerate(people) :
name = person['name']
age = person['age']
print(i,name,age)
if i > 5: # 5개만 출력하기 (i == 4) i는 0부터 시작
break
example 1) 리스트에서 짝수만 출력하는 함수 만들기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for num in num_list:
if num % 2 == 0:
print(num)
example 2) 리스트에서 짝수의 개수를 출력하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for num in num_list
if num % 2 == 0:
count = count + 1 (count += 1)
print(count)
example 3) 리스트 안에 있는 모든 숫자 더하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
sum = 0
for num in num_list:
sum = sum + num (sum += num)
print(sum)
example 4) 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max = 0
for num in num_list:
if max < num:
max = num
print(max)
max = num_list[0]
for num in num_list:
if max < num:
max = num
print(max)
def hello():
print("안녕!")
print("또 만나요!")
hello()
hello()
# 안녕! 또 만나요! 안녕! 또 만나요!
- 수학
f(x) = 2*x+3
y = f(2)
y의 값은? 7
- Javascript(기본 상태가 중괄호)
function f(x) {
return 2*x+3
}
- Python(기본 상태가 들여쓰기)
def f(x):
return 2*x+3
return이 있으면 위 함수를 그 값으로 변신시킨다고 생각해도 무방하다.
def hey():
print("헤이")
hey() # 헤이
변수를 받는 함수
def sum(a,b,c):
return a+b+c
result = sum(1,2,3)
print(result) # 6
def bus_rate(age):
if age > 65:
print("무료입니다")
return 0
elif age > 20:
print("성인입니다.")
return 1200
else:
print("청소년입니다")
return 700
myrate = bus_rate(age)
print(myrate)
bus_rate(27) # 성인입니다 1200
bus_rate(10) # 청소년입니다 700
bus_rate(72) # 무료입니다 0
# 조건문에 넣을 값을 바꿔가면서 결과를 확인할 때 쓰면 편함
example 1) 주민등록번호를 입력받아 성별을 출력하는 함수 만들기
def check_gender(pin):
print('')
my_pin = '200101-3012345'
check_gender(my_pin)
1. '-'로 쪼갠다.
2. 쪼개면 리스트 요소 두 개로 나눠짐.
3. 두 번째 중 첫 번째 글자가 홀수면 남성 짝수면 여성
4. pin은 따옴표로 감싸진 문자열이기 때문에 숫자열로 바꿔서 조건문을 돌려야함. # 문자열을 숫자열로 바꾸는 식은 int("") # javascript와는 다르게 파이썬은 문자열과 숫자열의 연산이 불가하다.
def check_gender(pin):
num = int(pin.split('-')[1][0]) # [1][:1]도 가능
if num % 2 == 0:
print('여성')
else:
print('남성')
my_pin = "200101-3012345"
check_gender(my_pin)
튜플()은 리스트[]와 비슷하지만 불변인 자료형. 마찬가지로 순서가 존재함.
1) 리스트
a = ['사과','감','배']
a[1] = '수박'
print(a) # ['사과','수박','배']
2) 튜플 : 리스트처럼 순서가 있는 자료형인데 불변형이다.
a = ('사과','감','배')
a[1] = '수박'
print(a) # TypeError: 'tuple' object does not support item assignment
people = [{'name':'bob','age':27},{'name':'john','age':30}]
people = [('bob',27),('john',30)] # 필요에 의해서 이렇게 쓰는 경우에는 0 번째는 무조건 이름이 오고 1 번째는 무조건 나이가 온다고 볼 수 있다.
좋은점: 중복이 제거된다. 교집합 / 합집합 / 차집합도 구할 수 있다.
a = [1,2,3,4,3,2,3,4,5,8,7,1]
a_set = set(a)
print(a_set)
# {1,2,3,4,5,7,8}
a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']
a_set = set(a)
b_set = set(b)
print(a_set & b_set) # 교집합 {'사과','참외'}
print(a_set | b_set) # 합집합 {'사과','감','수박','참외','딸기','멜론','청포도','토마토'}
example 1) 구글링문제 - Q. A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기 (차집합)
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
a_set = set(student_a)
b_set = set(student_b)
print(a_set - b_set) # {'물리2','국어','음악','화학1'}
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
for ns in scores:
name = ns['name']
score = ns['score']
print(name,score)
#
영수 70
영희 65
기찬 75
희수 23
서경 99
미주 100
병태 32
for ns in scores:
name = ns['name']
score = ns['score']
print(name+'는 '+score+'점 입니다')
# TypeError: can only concatenate str (not "int") to str
# 파이썬은 문자열과 숫자열의 연산이 불가하기 때문에 score부분은 문자열로 감싸줘야한다. str()
for ns in scores:
name = ns['name']
score = str(ns['score'])
print(name+'는 '+score+'점 입니다') # 여기에 '+str(score)+'도 가능
#
영수는 70점 입니다
영희는 65점 입니다
기찬는 75점 입니다
희수는 23점 입니다
서경는 99점 입니다
미주는 100점 입니다
병태는 32점 입니다
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
에러가 있어도 건너뛰게 할 수 있는 방법
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby'},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
for person in people:
if person['age'] > 20: # 'age'값이 하나가 없음.
print (person['name'])
# KeyError: 'age' 에러가 남.
# 이럴 때 try except 구문을 이용한다.
for person in people:
try:
if person['age'] > 20:
print(person['name'])
except:
print('에러입니다')
#
carry
ben
에러입니다
red
queen
for person in people:
try:
if person['age'] > 20:
print (person['name'])
except:
name = person['name']
print(f'{name} - 에러입니다')
#
carry
ben
bobby - 에러입니다
red
queen
# 터미널에서 에러가 있을 경우 에러메시지가 뜨는 것도 try except구문을 써서 그런게 아닌가라는 생각도 든다.
def say_hi():
print('안녕!')
def say_hi_to(name):
# print('영수님 안녕하세요')
print(f'{name}님 안녕하세요')
from main_func import * # *은 파일명에 있는 모든 함수들을 가져옴.
say_hi()
say_hi_to('영수')
# 안녕!
# 영수님 안녕하세요!
from main_func import say_hi_to
say_hi()
say_hi_to('영수')
# NameError: name 'say_hi' is not defined
1) if문 - 삼항연산자
num = 3
if num%2 == 0:
# print('짝수')
result = '짝수'
else:
# print('홀수')
result = '홀수'
print(f"{num}은 {result}입니다.")
# 3은 홀수입니다
이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식이다.
result = ('짝수' if num % 2 == 0 else '홀수')
# '짝수'라고 해라. 만약에 num을 2로 나눈 나머지가 0이면. 그게 아니면 '홀수'라고 해라.
🙂 (참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자이다.
2) for문 - 한방에 써버리기
a_list = [1, 3, 2, 5, 1, 2]
# 각 요소에 *2한 리스트를 만들고 싶다.
b_list = []
for a in a_list:
b_list.append(a*2) # a_list를 돌면서 *2한 것을 b_list에 하나씩 추가해라.
print(b_list)
# [2, 6, 4, 10, 2, 4]
이것을 한 번에 쓸 수 있는 방법
b_list = [a*2 for a in a_list]
# a를 *2를 해라. a를 돌려라. a_list에 있는. 그리고 걔들을 다 리스트로 묶어라.
1) map - 리스트의 모든 원소를 조작하기
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people) # people을 하나하나 돌면서 check_adult에 넣어라.
print(result)
# <map object at 0x000001F7157B8FD0>
print(list(result))
# ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인'] 리스트로 묶어줘야 결과값이보인다.
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
# '성인'이라고 하자. 만약에 person의 'age'가 20보다 크면. 그게 아니면 '청소년'이라고 하자.
result = map(check_adult, people)
print(list(result))
result = map(check_adult, people)
result = map(lambda x: x, list)
# list를 돌면서 x에 값(x)을 넣음. lambda식은 매개변수를 보통 x로 쓴다.
result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
# people을 돌면서 person에 '성인' if person['age'] > 20 else '청소년'의 값을 넣음.
2) filter - 리스트의 모든 원소 중 특별한 것(True인 것들)만 뽑기
result = filter(lambda x: x['age'] > 20, people)
# people의 요소를 하나하나 x에 넣고 그 x의 'age'값이 20보다 크면 걔들만 뽑아라.
print(list(result))
#
[{'name': 'carry', 'age': 38},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}]
1) 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있다. 순서 상관 없음!
def cal(a, b):
return a + 2 * b
result = cal(1,2)
print(result) # 5
result = cal(2,1)
print(result) # 4
result = cal(a=2, b=3)
print(result) # 8
result = cal(b=3, a=2)
print(result) # 8
# 매개변수에 직접 값을 지정해주면 순서를 맞추지 않아도 된다.
2) 특정 매개변수에 디폴트 값을 지정해줄 수 있다.
def cal(a, b=2): # b의 값을 2로 고정
return a + 2 * b
result = cal(1) # b값을 안 넣어줬지만 디폴트값이 있어서 넣었다고 인식함.
print(result) # 5
result = cal(1,3) # 따로 값을 넣어주지 않으면 디폴트 값이 기본값으로 적용되고 직접 넣어줬을 경우 넣어준 값으로 적용됨.
print(result) # 7
3) 입력값의 개수를 지정하지 않고 모두 받는 방법(args : arguments)
def cal(*args): # 변수인자를 무제한으로 넣을 수 있다. 그것을 리스트로 받아서 쓸 수 있다.
for name in args:
print(f'{name}야 밥먹어라~')
cal('철수','영수','희재')
#
철수야 밥먹어라~
영수야 밥먹어라~
희재야 밥먹어라~
4) 키워드 인수를 여러 개 받는 방법(**kwargs : 딕셔너리 형태로 만들어서 쓸 수 있음)
def cal(**kwargs):
print(kwargs)
cal(name='bob',age=30)
cal(height=180)
#
{'name': 'bob', 'age': 30}
{'height': 180}
1) 언제 사용하는지가 중요하다.
예를 들어, 아주 많은 몬스터들의 HP를 관리해야 하면?
방법 1. 리스트의 순서를 잘 지켜서 각 몬스터들의 hp를 잘 적어둔다. (중앙 한 곳에 모아서 관리)
방법 2. 몬스터마다 각자의 hp를 가질 수 있게 한다.
2) 어떻게 쓰는가?
class Monster():
hp = 100
alive = True
def damage(self, attack): # self는 내가 받은 attack은 내가 받은 데미지
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self): # 죽었는지 살았는지
if self.alive( == True):
print('살아있다')
else:
print('죽었다')
m1 = Monster()
m1.damage(150)
m1.status_check() # 죽었다.
m2 = Monster()
m2.damage(90)
m2.status_check() # 살았다.
# 자체적으로 관리가 가능
# m1, m2는 인스턴스
출처: 네이버 지식백과
글 잘 봤습니다.