본문으로 바로가기

2022.9.1 수 백준, 파이썬 기초강의 1~17

category TIL 2022. 9. 7. 00:03

파이썬 기초강의 복습내용을 실습하면서 필기한 내용이기 때문에 읽으면서 복습을 해도되고 직접 해보면서 복습할 수 있다.

#a='minsu'
#'' 작은 따옴표로 문자열 감싸줘야함 변수와 헷갈리지 않음
a=(3>2)
a=(3==2)
print(a)
#컴퓨터가 기억하는 메모리공간을 이 변수가 가리키고 있다 연결된거다 이해하자
# a=true print(a) 참거짓형도 담을 수 있다

#print(a/b)
# 구글 검색 꿀팁 파이썬 숫자 제곱 치면 3-4개 보고 공통적 내용
#print(a**b)
#제곱 ** 나머지 %
#print(b%a)
#짝홀 판별 자주쓰이는 연산
#first_name='kim'
#last_name='minsu'
#공통되게만 해서 큰 따옴표 작은 따옴표 상관없음 변수와 구별

#a=2
#b='a' #문자열 a임
#print(b)

#a='2'
#b='hello'
#print(a+b)
#숫자와 문자열 더하라고 하면 안된다

#a='2'
#b=str(2) #str 스트링 문자열이라는 뜻
#print(a+b)

# text = 'abcdefghi'
# result = len(text) len 문자열 길이
# result = text[:3]# 3개까지 자르라는거네 결과 abc나옴
# result = text[3:]# 3개 이후의 문자열
# result = text[3:8] #처음부터 맞추려고 하지말고 시험보는게 아님 그냥 돌려보고 8까지 해보자 이런느낌
# result = text[:]#는 문자 복사해서 그대로

#print(result)
#--------------------------------------------- 문자열 쪼개기
#myemail ='abc@naver.com'
#result = myemail.split('@')[1].split('.')[0]
#print(result)
#-------------------------------------
text = 'sparta'
result = text.split('r')[0] #or [:3]
print(result)

phone = '055-123-1234'
result = phone.split('-')[0]
print(result)

#컴퓨터는 숫자를 0부터 센다
#key:value 로 자료를 담는 자료형이다
#a_list=['사과','감','배',['사과','감']]
#print(a_list[3][1])

#--------------------------------------------
#a_list=[1,5,3,6,7]

#a_list.append(99)
#a_list.append(20000)
#result = a_list[:3]
#-1 하면 제일 마지막친구 출력
#len 길이구하기 = 개수구하기 쉬울듯?
#a_list.sort() 오름차순 sort= 정렬
#a_list.sort(reverse=true) 내림차순 알고리즘 문제풀때 사용된다

#result = (5 in a_list)# 5가 리스트에 있니? 참거짓 나온다 sort이런거 외우는게 아니라
#나중에 꺽쇠를 사용해서 숫자를 넣는다 이런거 알면된다 나는  스스로 적고 최대한 안보고 하고싶다 그래야 실력이 느니까

#print(result)
#--------------------------------------------
#a_dict={'name':'bob','age':27} #리스트 딕션 조합되기도 한다

#result = a_dict['friend'][2]
#a_dict['height'] = 170 넣을 수 있다 넣고 있는지 test 해보자 참 거짓

#print(a_dict) #a_dict 나 result는 변수명임 마음대로 해도된다
#print('height' in a_dict) height 있냐 없냐 알 수 있다
#--------------------------------------------
#people = [{'name': 'bob', 'age': 27},{'name': 'john', 'age': 30}]
#전형적인 모습임. 리스트에 요소가 딕셔너리로 들어가있다

#print(people[1]['age'])
#------------------------------------------
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'])

#{} 여러개일때 몇번째[3]로 들어가서 score은 딕이 하나 거기서 science라는 리스트 꺼내 오는것

#if 만 알면된다
money=2000
if money > 3800:
    print('택시타자')
elif money > 1200:
    print('버스타자')
else:
    print('택시를 못탐')
    print('그럼 뭐타?')
#들여쓰기 매우매우 중요
#: 나오고 들여쓰기 해야 명령문이 되는거임 print 들여쓰기 안하니까 그냥 무조건 print 된다
#elif 여러개 사용가능
#f=['사과','베','감','수박','딸기']

#for aaa in f:
#    print(aaa)

#========================================
#예제 리스트안 딕 출력하기

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}
    ]

#print(people[0])
#for person in people:
    #name=person['name']
    #age=person['age']
    #print(name, age)

    #if age>20:
        #print(name, age)

#--------------------------------------
for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i,name,age)
    if i>2:
        break
#people 만줄이다 10개만 테스트할때 쓰는거지 뭐 만개
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

sum=0
for aa in num_list:
    sum += aa

print (sum)

#1. 짝수만 프린트
#2로 나누었을때 나머지가 0이면 출력해라

#2. 짝수가 몇개인지 출력
#len?   # +=1 같은 의미임
#정답 count=0 if count= count+1 print (count)

#리스트 안 모든숫자 더하기

#a=('사과','배','감')

#a[1]='수박'

#print(a[1])

#튜플은 리스트랑 똑같이 생겼다  근데 불변형 괄호로 씀 걍 () 에러뜨네 바꾸려고 해도..
#언제 쓰냐

#people=[{'name':'bob','age':25},{'name':'su','age':28}]  이거만 볼 확률 95%
#people=[{'bob',27},('su':30)] 이거나오면 아 불변형이구나 알기만

#a=[1,2,3,4,5,2,5,32,6,4,43,4,3]

#a_set = set(a) #집합인데 중복이 딱 제거 되어서 나온다 교집합 차집합 합집합도 구할 수 있따
#print(a_set)

#a=['사과','감','배','수박','딸기']
#b=['배','사과','포도','참외','수박']
#a_set=set(a)
#b_set=set(b)

#print(a_set & b_set)
#print(a_set | b_set)
#print

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']
student_a=set(student_a)
student_b=set(student_b)

#a는 들엇는데 b는 안든거 차집합 해보자

print(student_a-student_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: #s를 지정하겠다 scores 안의 내용으로
    name = s['name'] #name = s의 'name'으로
    score = s['score']
    #print(name+'의 점수는'+str(score)+'점 입니다')
    #print(name + '의 점수는'+str(score)+'점입니다.') 이거대신 위에 score = str(s[score])
   #print(name + '의 점수는' + str(score) + '점입니다')
    #숫자로 바꿀때는 int 문자로 바꿀때는 str ++은 뭐야
    #내가 해보고 싶었던건 띄어쓰기 없는 +이다 str+가 뭔지 몰랐네

    #print(f'{name}의 점수는 {score}점입니다.')
    #f 스트링의 힘은 여기서 나온다 훨씬 간결
    #print(f'') 안에 {함수이름사용} 하면 그대로 써짐

    print(name+str(score)+'입니다.')

#f-string
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:

    #name = person['name']
    #age= person['age']
    #print(name+str(age)) 이건 붙여서 하는거 연습 ,는 띄어쓰기 돼서
    if person['age'] > 20: #이거 person이 뭔지 선언 안해도 되는거면 위에서는 왜 했을까?
        print(person['name'])

    #print(person['name']+str(person['age'])) #오 이렇게도
#예외처리 try except
#person 넣으니까 어디가 오류인지 찾기가 쉬움 서버한테 콜을한다거나 할떄 사용 많이함 서버가 이상할 경우에 고치기 쉽다
#안되면 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'])
        #bobby age 없어서 에러난다.
    except:
        print(person['name'],'에러입니다.')
        #person 넣으니까 어디가 오류인지 찾기가 쉬움 서버한테 콜을한다거나 할떄 사용 많이함 서버가 이상할 경우에 고치기 쉽다

    #try except 넣으면 에러나도 스톱안하고 계속가라 프린트하다가 에러나서 나오다가 파일 날아가면 안되잖아

def sat_hi():
    print('안녕')

def say_hi_to(name):
    print(f'{name}님 안녕하세요')
# #한줄로 쓰는게 가능함
# num=3
#
# # #if num%2==0:
# #     result = '짝수'
# # #else:
# #     result='홀수'
#
#
#
# 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)
# --------------------
b_list=[a*2 for a in a_list] #a_list 안에 있는 a 를 돌리는데 그때마다 *2를하고 걔네를 b리스트로 묶는다
#b리스트를 만드는데 그걸 a두배로 만들어라
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}
]
#def check_adult(person):
    # if person['age']>20:
    #     return '성인'
    # else:
    #     return '청소년'
#
# result=map(check_adult, people) #맵은 하나하나 돌면서 체크 어덜트에 넣어라
# print(list(result)) #그 결과값을 다시 묶었다.

# ------------------------------- 하나로 해보자 if문 짧게쓰기 배운걸로
#def check_adult(person):
#     return ('성인' if person ['age']>20 else '청소년')
# result=map(check_adult, people)
# print(list(result))
# ----------------------------------람다식 한줄로 가능해짐
# result=map(lambda person:('성인' if person ['age']>20 else '청소년'), people) #result=map(lambda x:x, people:person)
# print(list(result))
# --------------------------------------------필터는 사용 가능성 좀 있다.
result= filter(lambda person : person['age']>20,people)
print(list(result))
#람다의 요소를 x의 값에 하나하나 넣고 x['age'] 값이 20보다 크면 걔네만 취해라
# result= filter(lambda x: x['age']>20,people) 람다는 관형적으로 x:x 로 쓴다.
#직접 사용 거의 x 라이브러리 어떻게 생겼는지 볼때 이게 뭐지? 안하도록 이거 배움
# def cal(a,b):
#     return a+2*b
# result= cal(1,2)
# print(result)
# -----------------------------
# def cal(a,b):
#     return a+2*b
# result= cal(a=1,b=2) #ab 지정하면 좋은 이유는 b=2 a=1 해도 상관없어지기 때문
# print(result)
# --------------------------
# def cal(a,b=2):
#     return a+2*b
# result= cal(1,3) #고정해놓고 b에 넣어주면 넣은 값으로 나옴 기본값 정할때 쓰겠네
# print(result)

#--------------------------- 보기만해
# def cal(*args):
#     for name in args:
#         print(f'{name} 밥먹어라~')
# # cal('영수','철수','영희')
# cal('영수','철수') #만 넣어도 두개가 나옴 입력한것만 나온다 느낌 = 인자를 무제한으로 받는다
# ------------------------------ 딕셔너리로 들어가는 함수 인자들을 많이 지정해서 넣을 수 있다.
def cal(**kwargs):
    print(kwargs)
cal(name='bob',age=30,height=180)