2022. 9. 2. 16:04ㆍTIL(Today I Learnd)
- 목차
a_list = [1,3,2,5,1,2] # 리스트 함수 선언
b_list=[a*2 for a in a_list] # a_list의 인자값들에 2씩 곱하는 반복문
print(b_list) # [2,6,4,10,2,4]
야무지게 하루를 보내보자
함수
def
버스 요금 검사기
def bus_r(ag): # def함수와 ag라는 값을 담는 bus_r이란 함수 선언
if ag>65: # 만약 ag가 65보다 크다면
print('곧 가실분인데 버스 정도는 공짜로 타쇼') # 곧 가실분인데 버스 정도는 공짜로 타쇼 라고 출력하고
return 0 # 0을 bus_r에 저장해
elif ag>20: # 만약 ag가 20보다 크면
print('돈 잘 버는 사람이 못버는 사람들 좀 위하고 그런겨 다 참고 해') #돈 잘 버는 사람이 못버는 사람들 좀 위하고 그런겨 다 참고 해 라고 출력하고
return 1200 # bus_r에 1200을 저장해
else: # 나머지는
print('사실 코묻은 돈이 제일 쏠쏠히 벌리는데 봐줬다') # 사실 코묻은 돈이 제일 쏠쏠히 벌리는데 봐줬다 라고 출력하고
return 850 # bus_r에 850을 저장해
myr = bus_r(19) # bus_r안에 (19) 값을 저장하는 myr 함수 선언
print(myr) # myr 출력
#사실 코묻은 돈이 제일 쏠쏠히 벌리는데 봐줬다
#850
성별 판독기
def c_g(p): # def 함수 선언 p라는 값을 담는 c_g라는 변수 선언
n = int(p.split('-')[1][:1]) # p라는 변수를 -를 기준으로 나누고 1번째의 1번째 까지의 str을 int 형태로 바꾼 것을 n이라는 변수에 저장
if n % 2==0: # 만약 n을 2로 나눈 몫이 0이면
print('female') # female 출력
else: # 그렇지않다면
print('male') # male 출력
c_g('100101-2012345') # p 값에 100101-2012345 저장되고 자동으로 위의 함수 실행
c_g('100101-4012345') # p 값에 100101-4012345 저장되고 자동으로 위의 함수 실행
c_g('100101-1012345') # p 값에 100101-1012345 저장되고 자동으로 위의 함수 실행
# female
# female
# male
tuple = 불변형 리스트
a = (1,2,3,4)
a = [('minsu',18),('Ocean',22)
집합
a = [1,2,3,4,5,6,7,78,6,5,5,1]
a_set = set(a)
print(a_set)
b = ['감','배','사과','수박','수박','자몽']
c = ['배','사과','포도','참외','수박','참외','배']
b_set = set(b)
c_set = set(c)
print(b_set & c_set) #교집합
print(b_set | c_set) #합집합
print(b_set - c_set) #차집합
print(b_set ^ c_set) #대칭차집합
# {'배', '사과', '수박'}
# {'배', '감', '포도', '참외', '사과', '자몽', '수박'}
# {'감', '자몽'}
# {'포도', '참외', '감', '자몽'}
f-string
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
] # scores 라는 변수에는 딕셔너리~~~~가 있는 리스트가 저장됨
for s in scores: # scores 안에서 s라는 변수 저장하고 반복문을 돌릴거다
name = s['name'] # name 변수에는 s 안에있는 딕셔너리의 name에 대응하는 값을 저장
score = str(s['score']) # score 변수에는 s안에있는 score에 대응하는 값을 str형태로 변환하여 저장
print(name+'의 점수는 '+ score+'점입니다.') # name값에 '의 점수는' 에 score값에 '점입니다.' 추가하여 출력
print(f'{name}의 점수는{score}점입니다.') # 위의 명령과 동일
# result
# 영수의 점수는 70점입니다.
# 영희의 점수는 65점입니다.
# 기찬의 점수는 75점입니다.
# 희수의 점수는 23점입니다.
# 서경의 점수는 99점입니다.
# 미주의 점수는 100점입니다.
# 병태의 점수는 32점입니다.
예외처리
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby',}, #-------- 혼자만 age가 빠짐---------
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
] # people 변수에 딕셔너리 저장
for p in people: # people을 p에 저장시켜 반복문
try: # 에러 발생해도 진행함
if p['age'] >20: # 만약 p값에 있는 age에 대응하는 값이 20보다 크면
print(p['name']) # p값에 있는 name에 대응하는 값들을 출력해라
except: # 에러가 발생할 시
print(p['name'], '에러입니다.') p값에 있는 name에 대응하는 값과 에러입니다. 라는 문자를 출력해라.
# carry
# ben
# bobby 에러입니다.
# red
# queen
남용하면 이상해질 수 있으니 많이 안쓰는게 좋대요
파일 불러오기(다른 파일 함수 불러오기)
두개의 파일이 있을 때
func 파일에 함수를 집어넣고 test 파일에 불러오는 법
test 파일 상단에
from main_func import *
라고 입력해주자
그러면 html에서 부트스트랩이나 에이잭스 불러오는 것 처럼 추가 된다 ㅎㅎ
한줄의 마법
파이썬은 웬만해서 한줄로 코드 작성이 가능하다고 한다.
if 문
num=4
if num%2==0:
result='짝'
else:
result='홀'
print(f'{num}은 {result}이다')
는
num=4
result = ('짝' if num % 2 == 0 else '홀')
print(f'{num}은 {result}이다') # 괄호가 없어도 된다
로 줄여쓰며 동일한 값을 출력한다.
for문
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=[a*2 for a in a_list]
print(b_list)
로 줄일 수 있으며
동일한 결과값 [2, 6, 4, 10, 2, 4]이 출력된다.
이건 아직 힘드네...
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 ca(p):
return ('성인' if p['age'] > 20 else '청소년')
# 이 수식은
# if p['age']>20:
# return '성인'
# else:
# return '청소년' 와 똑같은 값을 가진다
r = map(ca, people)
print(list(r))
여기에 lamda식을 쓰면
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}
]
r = map(lambda p: ('성인' if p['age'] > 20 else '청소년'), people)
print(list(r))
걍 뭐 함수도 없어지는데 이게 뭐냐
filter
참인 변수만 갖고오는거
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}
]
r = filter(lambda x: x['age']>20, people)
print(list(r))
# 결과는 [{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]
아 씨 머리아파
함수 심화로는 매개변수가 있는데
cal,
*args
**kwargs
등이 있고 머리 터질거 같으니 걍 이렇게 생긴애가 있다만
알아놓고 넘어가자
클래스
Html에도 있던 class
class Monster(): # Monster라는 class생성
hp = 100 # 100을 파라미터로 갖는 hp 함수 생성
alive = True # True 인자값을 갖는 alive 함수 생성
def damage(self, attack): # self와 attack을 인자값으로 갖는 def damage생성
self.hp = self.hp - attack # hp는 hp에서 어택 받은 값만큼 감소
if self.hp < 0: # 만약 hp가 0 밑으로 내려가면
self.alive = False # alive가 False 값을 갖게됨
def status_check(self): # self를 인자값으로 갖는 def status_check 생성
if self.alive: #self.alive가 True일 경우
print('살았다') #살았다 출력
else: #아니면
print('죽었다') #죽었다 출력
m1 = Monster() # Monster값을 치환하는 m1 함수 생성
m1.damage(150) # m1함수를 150만큼 damage안의 attack에 대입하여 실행
m1.status_check() #m1을 self값에 대입하여 스테이터스 체크 실행 -> print 죽었다
m2 = Monster() # Monster값을 치환하는 m2 함수 생성
m1.damage(90) # m2함수를 90만큼 damage안의 attack에 대입하여 실행
m2.status_check() #m2을 self값에 대입하여 스테이터스 체크 실행 -> print 살았다
게임 몬스터 hp 구조
이상으로 파이썬 1주차 문법 수업 완강...
아 ... 머리에 들어오는게 너무 많다요...
백준 문제 풀기
3003번 문제
체스말의 갯수를 검토하고 부족하거나 빼야할 것들을 표시하는 함수
체스말은 총 16개 [king 1, queen 1, rook 2, bishop 2, knight 2, pawn 8]
king, queen, rook, bishop, knight, pawn = map(int, iput().split())
# 말들의 숫자에 대응할 함수들을 list 형태 안에서 int 형태로 입력 받을 수 있도록 선언
king = 1 - king
queen = 1 - queen
rook = 2 - rook
bishop = 2 - bishop
knigh = 2 - knight
pawn = 8 - pawn
# 각 말의 원래 갯수 - 입력된 갯수 = 찾거나 빼야 할 말의 갯수
print(king, queen, rook, bishop, knight, pawn)
# 총 갯수 출력
# 1 1 2 2 2 8 이 정상 숫자
# 0 0 2 1 3 5 입력시
# 1 1 0 1 -1 3 출력
같은 수식을 짧게 하려면 for 문을 이용한다
chess_pieces = [1, 1, 2, 2, 2, 8]
# 체스말 원래 갯수 리스트 형태로 선언
my_pieces = list(map(int, input().split()))
# 입력 할 체스말 갯수 변수 선언
# 항목을 입력 받을 거야 입력될 애들은 공백으로 구분할거야
# 입력된 애들은 int 형식이 될거야
# 입력된 애들은 list 형태로 묶을거야
for i in range(6): # i라는 함수 안에 순서대로 반복해서 0 1 2 3 4 5 집어 넣을거야
print(chess_pieces[i] - my_pieces[i], end=' ')
# 원래 갯수[순서대로 반복된 리스트] 들을 입력 갯수[순서대로 반복된 리스트] 대로 빼주는 결과값을
# \n(엔터키)가 아닌 ' '(공백 space)으로 쭉 정렬해서 출력해줄거야
# 0 1 2 2 2 7 입력시
# 1 0 0 0 0 1 출력
# 2 1 2 1 2 1 입력시
# -1 0 0 1 0 7 출력
for문 쉽지 않다 ㅎㅎ
'TIL(Today I Learnd)' 카테고리의 다른 글
20220906 TIL (0) | 2022.09.06 |
---|---|
20220905 TIL (2) | 2022.09.05 |
20220901 TIL (0) | 2022.09.01 |
20220831TIL (2) | 2022.08.31 |
20220830TIL (0) | 2022.08.30 |