a = 3 #a에 3을 넣는다
print(a)
b = a #a에 들어있는 값인 3을 b에 넣는다
print(b)
a = 5 #a에 5라는 새로운 값을 넣는다
print(a, b) #5 3
a = 5
b = 3
a+b #8
a-b #2
a*b #15
a/b #1.6666
a%b #2(나머지를 구함, 홀짝구할때 많이 쓰임)
-- 변수에 저장된 값에 연산을 한 수 다시 그 값을 같은 변수에 저장할 수 있음
a = 5
a = a + 3
print(a) #8
a += 3 #줄여서 쓸 수 있다. 같은 의미 !
-- 나눗셈의 나머지
a//b #1 (몫)
a%b #2(나머지)
a**b #125(거듭제곱)
x = True
y = False
#소문자인 경우 자료형이라 인식하지 못하고 변수명이라 인식하니 주의하기!
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연산자로 참은 거짓, 거짓은 참으로 바꿔줌)
a and b #False(and연산자로 모두 참이어야 참)
-- Q. 숫자들의 평균 구하기
a = 24
b = 16
c = 26
print((a+b+c)/3)
-- 작은 따옴표와 큰 따옴표는 같다!
# 작은 따옴표 또는 큰 따옴표. 둘 다 같아요!
a = "aa"
b = 'aa'
-- 따옴표를 안쓰면 변수명으로 인식하기 때문에 꼭 구분해서 쓰기!
a = 1
b = "a"
c = a
print(a, b, c)
-- 문자열간 더하기는 두 문자열을 이어붙인 문자열로 반환한다!
first_name = "Harry"
last_name = "Potter"
print(first_name + last_name) # HarryPotter
-- 문자와 정수를 더하면 에러!
a = "3"
a + 5 # 에러
-- 문자열 길이는 len
print(len(first_name + last_name)) # 11
print(len("Hello, Sparta!")) # 14
sentence = 'Metod'
print(sentence.upper()) #METHOD
print(sentence.lower()) #method
-- 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'
rr = myemail.split('@')
rr[1]
rr2 = rr[1].split('.')
print(rr2[0])
-- 특정 문자를 다른 문자로 바꾸기
text = '용인시-기흥구'
print(text.replace('-','>'))
f="abcdefghijklmnopqrstuvwxyz"
print(f[1]) #1번 자리 문자
print(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 처음부터 끝까지
-- 리스트 1. 순서가 있는 다른 자료형들의 모임
a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]
--리스트의 길이
a = [1, 5, 2]
print(len(a)) # 3
b = [1, 3, [2, 0], 1]
print(len(b)) # 4
-- 문자열처럼 인덱싱과 슬라이싱 가능
a = [1, 3, 2, 4]
print(a[3]) # 4
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)
-- 리스트 요소가 여러개일때
a = [1, 2, [2, 3], 0]
print(a[2]) # [2, 3]
print(a[2][0]) # 2
a = [1, 2, 3]
a.append(5)
print(a) # [1, 2, 3, 5]
a.append([1, 2])
print(a) # [1, 2, 3, 5, [1, 2]]
# 더하기 연산과 비교!
a += [2, 7]
print(a) # [1, 2, 3, 5, [1, 2], 2, 7]
-- 리스트 정렬하기
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
-- 딕셔너리는 키와 밸류로 이루어져있음
person = {"name":"Bob", "age": 21}
print(person["name"]) #'Bob'
-- 딕셔너리 만들기
a = {"one":1, "two":2}
# 빈 딕셔너리 만들기
a = {}
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
-- 딕셔너리 안에 해당 키가 존재하는지 알고 싶을때는 in
person = {"name":"Bob", "age": 21}
print("name" in person) # True
print("email" in person) # False
print("phone" not in person) # True
-- 딕셔너리는 리스트와 함께 쓰여 자료를 정리할 때 쓰인다
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'
-- smith의 science 점수를 출력해보세요
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}}
]
print(people[2]['score']['science'])
-- 조건문은 조건을 만족했을 때 특정 코드를 실행한다.
-- 들여쓰기 매우 중요!!!!
age = 27
if age < 20:
print("청소년입니다.")
elif age < 65:
print("성인입니다.")
else:
print("무료로 이용하세요!")
# 성인입니다.
-- for문 기본구문
fruits = ['사과', '배', '감', '귤']
for fruit in fruits:
print(fruit)
-- 이 리스트에서 나이가 20보다 큰 사람만 출력
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 person in people :
if person['age'] > 20 :
print(person['name'])
-- enumerate, break
fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']
for i, fruit in enumerate(fruits):
print(i,fruit) #순서대로 i에 번호를 매기고 출력
for i, fruit in enumerate(fruits):
print(i, fruit)
if i == 4:
break #i=4까지 출력하고 멈춤
-- 짝수만 출력하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for num in num_list :
if num % 2 == 0 :
print(num)
-- 리스트에서 짝수의 개수 출력하기
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
print(count)
-- 리스트 안에 있는 숫자 모두 더하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
sum = 0
for num in num_list :
sum = sum + num
print(sum)
-- 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기
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)
함수 쉬운 설명 : https://codingapple.com/unit/python-function-def-when-to-use/
-- 긴 코드를 한 단어로 축약할 때
def 인사():
print('안녕하세요오오오 어쩌구 너무 길어서 축약하고 싶어요')
인사()
-- 조건문에 넣을 값을 바꿔가면서 결과를 확인
def bus_rate(age):
if age > 65:
print("무료로 이용하세요")
elif age > 20:
print("성인입니다.")
else:
print("청소년입니다")
bus_rate(27)
bus_rate(10)
bus_rate(72)
-- 출력뿐만 아니라 결과값을 돌려주도록 만들기
def bus_fee(age):
if age > 65:
return 0
elif age > 20:
return 1200
else:
return 0
money = bus_fee(28)
print(money)
-- Q. 주민등록번호로 성별 출력하기
def check_gender(pin):
num = int(pin.split('-')[1][0])
if num % 2 == 0 :
print('여자')
else :
print('남자')
check_gender('231231-1098898') #남자
check_gender('231231-2098898') #여자
check_gender('231231-4098898') #여자
-- 튜플 : 리스트와 비슷하지만 불변인 자료형 소괄호()로 씀
a = (1,2,3)
a[0] = 99
print(a[0]) #에러 발생함 !
# 튜플은 딕셔너리 대신 리스트와 튜플로 딕셔너리 비슷하게 ~ 만들어 사용할 때 많이 쓰인다.
a_dict = [('bob','24'),('john','29'),('smith','30')]
-- 중복이 제거된다! 집합 개념과 동일하다
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set)
-- a, b의 집합 관계를 따져보자!
a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']
print(a & b) # 교집합
print(a | b) # 합집합
print(a - b) # 차집합
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
-- 이름과 점수 출력해보기
for s in scores :
name = s['name']
score = string(s['score'])
print(name, score)
-- f-string용도는 글자 합쳐주기!
for s in scores:
name = s['name']
score = str(s['score'])
print(name+'는 '+score+'점 입니다')
-- 요거를 아래와 같이
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
-- 20살 이상의 이름만 출력해보기
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 person in people:
if person['age'] > 20:
print (person['name'])
-- 근데 만약 bobb가 age를 가지고 있지 않다면?
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:
print(person['name'])
-- carry, ben까지만 출력되고 에러가 발생함! 이를 방지하기 위해 try except를 사용
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 :
try :
if person['age'] > 20:
print(person['name'])
except :
print('에러입니다')
파일을 main_test.py, main_func.py로 분리한 상태
-- main_func에 있는 함수를 main_test 파일에 불러옴
def say_hi():
print('안녕!') #main_func에 작성한 함수
from main_func import *
say_hi()
num = 3
if num%2 == 0:
result = "짝수"
else:
result = "홀수"
print(f"{num}은 {result}입니다.")
-- 위 구문을 아래와 같이 줄여 쓸 수 있다
num = 3
result = "짝수" if num%2 == 0 else "홀수"
print(f"{num}은 {result}입니다.")
//
a_list = [1, 3, 2, 5, 1, 2]
b_list = []
for a in a_list:
b_list.append(a*2)
print(b_list)
--- 역시 한줄로 정리하면,
a_list = [1, 3, 2, 5, 1, 2]
b_list = []
for a in a_list:
b_list.append(a*2)
print(b_list)
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}
]
-- 1차조작
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people)
print(list(result))
--2차조작
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
--3차조작
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
map과 아주 유사한데, True인 것들만 뽑기! (map보다 훨씬 쉬워요!)
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
이 내용들은 직접 쓰는 것보단 알고 있으면 내장함수 등을 사용할 때 도큐먼트를 읽는 데 도움이 됩니다!
def cal(a, b):
return a + 2 * b
print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
클래스의 사용방법? 각 객체 값을 따로따로 부텨할 때(?) -> 나중에 좀 더 심화 공부가 필요할 듯 하다
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self):
if self.alive:
print('살아있다')
else:
print('죽었다')
m = Monster()
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()