본문 바로가기

복습/python

[내일배움캠프] 파이썬 문법 기초

* 파이썬은 들여쓰기로 내용물을 분류하기 때문에 줄맞춤 주의

 

- 변수 : 값을 담는 박스 / 값이 담긴 위치를 가리키는 것 

- 데이터 값 종류 

1) 정수

2) 실수

3) 문자열 (변수와 헷갈리지 않도록 따옴표로 감싸주기 필수)

4) 참거짓형 (명제가 참이면 결과값이 True, 거짓이면 False로 출력)

 

숫자를 문자열로 변환하는 방법

- 따옴표로 감싸주기 

- str(숫자기입)

 

문자열 길이 구하는 방법

변수명 = "길이를구할문자를입력"

len(변수명)

결과값 10

 

문자열 자르는 방법

변수명[:3] → 1번째 요소부터 3번째 요소까지만 출력

변수명[3:] → 4번째 요소부터 끝까지 출력 

변수명[2:5] → 2~5번째까지 출력

변수명.split('__')[0] → '__'기준으로 나눈 리스트에서 0번째 값

 

 리스트  

- 변수명 = [1, 2, 3, 4] 대괄호로 표현함

- 순서가 중요 (순서는 0부터 시작)

- 한 개의 리스트 안에서 숫자, 문자열, 참거짓형 혼합사용 가능

- 리스트 내에 리스트 중첩 사용 가능 → 하위 리스트 값을 가져오려면 ex) [1, 2, 3, [9, 0]]  → [3][0] → 9

- .append(__)   리스트에 해당값 추가

- [-1]   맨 마지막 값 출력

- .sort()   정렬 올림차순

- .sort(reverse=True)   내림차순정렬

- (찾고자 하는 값 in 리스트명) → 결과값은 참/거짓으로 출력

 

 딕셔너리 

- 순서개념이 없음

- key:value

- 딕셔너리에 리스트 삽입 가능

- 딕셔너리에서 어떠한 값을 찾고싶을 때

('찾고자 하는 value에 해당하는 key값' in 딕셔너리 변수명) → 결과값은 참 거짓으로 출력 

- 딕셔너리에 값 추가하기

변수명['추가하려는 key값'] = 해당 value값

- 하나의 리스트에 딕셔너리를 여러개 넣어 사용할 수 있음

- 예시) people[2]['score'] → people의 2번째 값의 'score'key의 value값을 가리킴

 

변수명 = {'key값':'value값', 'key값':'value값' }

변수명['key값']

결과값은 해당 key의 value값 출력

 

 조건문 

* ' : '로 조건설정 마무리

 

if 조건설정:    

조건이 참일 때의 동작설정

 

elif 조건설정2:

조건설정2가 참일 때의 동작설정

 

else:

위 조건이 거짓일 때의 동작설정

 

 반복문 

- 리스트 요소를 하나씩 돌면서 출력

- 반복문(for) 기초 구조

 

변수명a = [ 1, 2, 3, 4, 5, 6 ]

 

for  변수명b in 변수명a:

     print(변수명b) 

 

for i, 변수명b in enumerate(변수명a):

     변수명a = 변수명b['key1값']

     변수명b = 변수명b['key2값']

     print(i, 변수명a, 변수명b)

     if i > 5:        

          break  →  6이 5보다 크니까  6까지 나오고 멈춤

 

* i 는 요소의 순서 적어줌(순서는 0부터시작)

 

+= 1    → 1씩 더하기

 

 

조건에 맞는 요소를 하나씩 카운팅 하려면

카운팅할 변수를 우선 0으로 설정

 

변수명 = 0

 

for문으로 돌면서

    if로 조건을 제시

    변수명 += 1

print(변수명)

 

결과값으로 조건에 맞는 요소를 하나씩 카운팅해서 총합을 보여줌

 

변수명a = 0

for 변수명b in 리스트변수명:

     변수명a += 변수명b      →       변수명a = 변수명b + 변수명a      →     변수명a를 변수명b 만큼 증가시켜라와 같은 의미

 

 

 함수 

같은 동작을 하는 것

 

def 함수명():

    동작지정

 

함수명()  → 함수 호출 

 

결과값은 함수의 지정동작을 함

 

return 은 리턴 뒤에 값으로 변신

 

"3"이라는 문자를 숫자로 바꾸려면 

int("3") 감싸주기

 

2주차 수업--------

 

a리스트 중 __번째 값 수정하기

a[__] = '바꾸고싶은 값'

 

 튜플 

- 리스트랑 똑같이 생겼는데 불변형 (데이터 수정 불가, 추가 불가)

[] 대신 ()사용

 

필요에 따라서 

[{     :   ,   :   }, {     :   ,   :   }] 대신

[(     :   ,   :   ), (     :   ,   :   )] 사용 가능 

 

 집합 

- set()

- 중복 값이 제거되서 출력

- 교집합(&) 합집합(|) 차집합(- 또는 a.difference(b))도 구할 수 있음

 

a = [1, 1, 2, 2, 3, 3]

 

a_set =  set(a)

print(a_set)

 

결과값은 1, 2, 3

 

 f-string 

- 활용도 높음

- 문자열을 표현할 때 코드를 간단하게 쓸 수 있는 장점

- f를 앞에 입력하고 '문자열'을 입력하는 방식으로 쓰임

f'{변수명a}의 점수는 {변수명b}점입니다.'

 

 예외처리 

- try 안의 문장을 실행, 에러 발생 시에도 실행 중지하지 않고 except 안의 문장을 실행

- 에러 발생 시 그 자리에서 실행 중지하지 않고 계속 작동을 이어나감

- 서버 요청 시 서버에 문제가 있어도 큰 무리 없이 작동할 수 있도록 함

- 남용 시 작동은 하지만 뭔가 이상해지고 무슨 에러가 나는지 알 수 없음 (웬만하면 사용하지 않도록 주의)

for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
        print((person['name']), '에러입니다')

 

실행결과
carry

ben
bobby 에러입니다
red
queen


 

 파일 불러오기 

from 파일이름 import *

- 파일 확장자명 입력X, 파일 이름만 입력

- 파일 전체를 가져올 때는 * 입력

- 파일 중 특정 함수만 가져올 때는 * 대신 함수명 입력

 

 한줄로 줄여쓰기 

if문 줄여쓰기

 

변수명 = (조건이 참일 때 결과 if 조건설정 else 조건이 거짓일 때 결과)

num = 3

result = ('짝수' if num % 2 == 0 else '홀수')

print(f'{num}은 {result}입니다')

 

실행결과
3은 홀수입니다


 

 

for문 줄여쓰기

변수명 = [실행동작 for 변수명a in 리스트명A]

리스트A 안에 있는 요소(a)를 하나씩 돌면서 그때마다 실행동작을 진행한 후 리스트로 묶음

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 

변수명a = map(함수명b, 리스트명c)

리스트c를 하나하나 돌면서 모든 원소를 함수b에 넣어라

 

 lambda 

- 주어진 조건에 부합하는 특정 값만 취하는 식

result = map(lambda xx people)

people을 하나씩 돌면서 첫 번째 x에 넣음 

x를 가지고 x(조건에 따라)로 리턴해라

 

 filter 

- map과 아주 유사, True인 것만 취하는 식

- 직관적이고 유용한 편이라 자주 사용됨

 

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):
    #return ('성인' if person['age'] > 20 else '청소년')

#result = map(check_adult, people)

#result = map(lambda x: x, people)
#result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)

result = filter(lambda x: x['age'] > 20, people)

print(list(result))

실행결과

[{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]

 

입력된 조건에 부합(True)하는 값만 출력 ( x['age'] > 20 )


 함수의 매개변수 

- 라이브러리를 가져다 쓰거나 라이브러리 코드를 이해할 때 필요한 개념

- a=1, b=2 처럼 값을 지정하면 입력 순서가 바뀌어도 동작에 아무런 영향을 미치지 않음

- 값을 지정하면 값을 넣지 않았을 때 기본값으로 설정할 수 있음

- *args   변수에 인자를 무제한 입력 가능, 그것을 리스트로 받아올 수 있음

- **kwargs   딕셔너리로 출력, 인자를 지정해서 많이 넣어줄 수 있음

 

 class 

- 객체지향적이다 :

체에 관련된 속성을 해당 물체에 입력,

컨트롤 하는 함수를 생성해 연결하고

중앙에서는 그 함수만 불러와서 체를 제어하는 것

- 함수 코드를 작성할 때

물체가 가진 변수를 사용하려면

변수 앞에 self.을 입력하여 명확히 지칭해야함

- 인스턴스 : 하나의 물체