22.11.08 - Python

Gon·2022년 11월 8일
0

공부정리

목록 보기
5/14
post-thumbnail

Python


1. 시작

print('Hello World!')
# Hello world!를 출력하는 명령어

2. 변수

a = 1        
# 1을 a에 넣는다.
print(a) 
# 1 출력
b = a
# a에 들어 있는 값인 1을 b에 넣는다.
print(b)
# 1 출력
a = 2
# a에 2라는 새로운 값을 넣는다.
print(a, b) 
# 2 1 출력

3. 자료형

  • 숫자형
#숫자형 연산

a = 2
b = 1

a+b # 3
a-b # 1
a*b # 2
a/b # 2

a+3*b # 13 (사칙연산 순서대로 계산)
(a+3)*b # 20 (소괄호를 이용해서 먼저 계산할 부분 표시 가능)

a//b # (몫 연산)
a%b # (나머지 연산)
a**b # (거듭제곱)

# -----------------------------------------------------------------

a = 1
a = a + 2 # 1에 2을 더한 값을 다시 a에 저장
print(a) # 3
a += 3 # 위랑 같은 의미
  • Bool 자료형
    참/거짓(True/False)을 나타내는 불(Boolean) 자료형

  • 문자형

a = "aa"
b = 'aa'

a = 1
b = "a"
c = a
print(a, b, c) # 1 "a" 1 # 따옴표로 구분해서 써야함

# 문자열 연산

first_name = "Fried"
last_name = "Chicken"

first_name + last_name # FriedChicken 출력
first_name + " " + last_name # Fried Chicken 출력

a = "1"
b = "2"
a + b # 12 출력

# 문자열과 숫자형은 더할 수 없음

a = "3"
a + 5 # 에러

# 문자열의 길이는 len() 함수를 써서 구할 수 있음

print(len("abcde")) # 5
print(len("1234567")) # 7

# 인덱싱과 슬라이싱

f="abcdefghijklmnopqrstuvwxyz"

f[1] # b 파이썬은 숫자를 0부터 센다

f[4:15] # efghijklmno f[4]부터 f[15] 전까지

f[8:] # ijklmnopqrstuvwxyz f[8]부터 끝까지
f[:7] # abcdefg 시작부터 f[7] 전까지

f[:] # abcdefghijklmnopqrstuvwxyz 처음부터 끝까지

# 스플릿

url = 'velog.io'

url_name = url.split('.')[0]

print(url_name) # velog 출력

4. 리스트와 딕셔너리

  • 리스트
    순서가 있는, 다른 자료형들의 모임
a = [1, 2, 3]
b = [1, "a", 2, 3]
c = []
d = list()
e = [1, 2, 3, [1, 2, 3]] # 리스트 안에 리스트도 가능함

# 마찬가지로 길이는 len() 함수를 써서 구할 수 있음

a = [1, 2, 3]
print(len(a)) # 3

b = [1, 2, [1, 2], 3]
print(len(b)) # 4

# 역시 인덱싱과 슬리이싱도 사용가능

a = [1, 2, 3, 4]
print(a[3]) # 4
print(a[1:3]) # [2, 3]
print(a[-1]) # 4 (맨 마지막 것)

# 덧붙이기 

a = [1, 2, 3]
a.append(5)
print(a)     # [1, 2, 3, 4]

a.append([1, 2])
print(a)     # [1, 2, 3, 4, [1, 2]]

# 정렬하기

a = [2, 1, 3]
a.sort()
print(a)   # [1, 2, 3]
a.sort(reverse=True)
print(a)   # [3, 2, 1]

# 요소가 리스트 안에 있나 확인하기

a = [2, 1, 3, "1", 4]
print(1 in a)      # True
print("2" in a)    # False
print(0 not in a)  # True
  • 딕셔너리
    딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 자료의 모임
person = {"name":"Genji", "age": 35}
print(person["name"]) 

# 값을 업데이트하거나 새로운 쌍의 자료 추가 가능

person = {"name":"Genji", "age": 35}
# 업데이트
person["name"] = "Sgt.Kim"
person["age"] =  "no info"
print(person)  # {'name': 'Sgt.Kim', 'age': 'no info'}
# 자료 추가
person["height"] = 185
print(person)  # {'name': 'Sgt.Kim', 'age': 35, 'height': 185}

# 딕셔너리 안 해당 키 유무 확인

person = {"name":"Genji", "age": 35}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True

5. 조건문

  • if문, elif와, else
    조건을 만족했을 때만 특정 코드를 실행하도록 하는 문법
age = 27

if age > 19:
    print("성인입니다.")
    
elif age > 12: # 다양한 조건을 판단할 때 사용
    print("청소년입니다.")
    
else: # 조건을 만족하지 않는 다른 코드를 실행하고 싶을 때 쓰는 문법
    print("어린이입니다.")

# if문 단축 (if와 else만 있을때 사용)
# (참일 때 값) if (조건) else (거짓일 때 값)

num = 1

if num%2 == 0:
    print("짝수")
else:
    print("홀수") # 홀수 출력

print("짝수" if num%2 == 0 else "홀수") # 홀수 출력, 출력 값이 같음

6. 반복문

for 문, 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문

a = [1,2,3,4,5,6,7]

for num in a:
    print(num) # 1부터7까지 순서대로 출력

7. 함수

def로 정의함, 반복적으로 사용하는 코드들에 이름을 붙여놓은 것

def hungry():
	print("배고파")
    print("치킨 먹고싶다.")

hungry() # 배고파 치킨먹고싶다 출력

# 조건문 사용

def bus_fare(age):
    if age > 19:
        print("성인입니다.")
        print('1450원')
    elif age > 12:
        print("청소년입니다.")
        print('1010원')
    else: 
        print("어린이입니다.")
        print('730원')

bus_fare(24) # 성인입니다. 1450원 출력
bus_fare(19) # 청소년입니다. 1010원 출력
bus_fare(7) # 어린이입니다. 730원 출력

8. 튜플&집합

  • 튜플
    리스트와 비슷하지만 불변인 자료형
a = (1,2,3)
a[0] = 4 # 리스트와 비슷하지만 a[0]값을 바꾸려하면 에러남

# 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 사용

a = [('Genji','35'),('Sgt.Kim','no info'),('D.Va','19')]
  • 집합(set)
    말 그대로 집합을 구현하는 방법(중복이 제거됨)
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

print(set(a)) # {1, 2, 3, 4, 5} 출력

# 교집합 / 합집합 / 차집합도 구할 수 있음

a = [1,2,3,4,5,3,4,2,1,0,-1]
b = [2,4,2,3,1,4,1,5,1,6,7]

a_set = set(a)
b_set = set(b)

print(a_set & b_set) # 교집합 {1, 2, 3, 4, 5} 출력
print(a_set | b_set) # 합집합 {0, 1, 2, 3, 4, 5, 6, 7, -1} 출력
print(a_set - b_set) # 차집합 {0, -1} 출력

9. f-string

변수로 더 직관적인 문자열 만들기 (f'문자열')

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 = str(s['score'])
    print(name+'는 '+score+'점 입니다') # 기존 방식 하나하나 지정해줘야함, 변수가 많아지면 헷갈림
    
for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}{score}점입니다') # f-string을 사용해 간결하게 표현, 결과값 같음

10. 예외처리

  • try-except 문
    에러가 있어도 건너뛰게 할 수 있는 방법
scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수'},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]

for score in scores:
    try:
        if score['score'] > 70:
            print (score['name'])
    except:
        name = score['name']
        print(f'{name} - 에러') # 기찬 희수 - 에러 서경 미주 순서로 출력, try-except 미사용시 에러

11. map,filter,lambda 식

  • map
    리스트의 모든 원소를 조작하기
  • filter
    리스트의 모든 원소 중 특별한 것만 뽑기
  • lambda 식
    함수명을 선언하고 사용하는 것이 아닌 식별자 없이 실행가능한 함수
    (lambda x: (출력할 값), (범위))
# map

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]

def check_score(name):
    return '우수' if name['score'] > 70 else '미달'

result = map(check_score, scores)
print(list(result)) # ['미달', '미달', '우수', '미달', '우수', '우수', '미달'] 출력, 결과값 동일

# lambda 식 사용시
result = map(lambda name: ('우수' if name['score'] > 70 else '미달'), scores)
print(list(result)) # ['미달', '미달', '우수', '미달', '우수', '우수', '미달'] 출력, 결과값 동일

# filter map과 유사한데, True인 것들만 뽑기
result = filter(lambda name: name['score'] > 80, scores)
print(list(result)) 
# [{'name': '서경', 'score': 99}, {'name': '미주', 'score': 100}] 출력

0개의 댓글