Study/Python

[Python] [초급]유기농냠냠파이썬 | 김왼손의 왼손코딩 1-71강

안다희 2019. 2. 6. 03:29
728x90

https://www.youtube.com/watch?v=ikCjr8-QYAs&list=PLGPF8gvWLYypeEoFNTfSHdFL5WRLAfmmm&index=10

강의 주소

 

 

https://www.python.org/

add python 3.6 to path 체크하고 다운받기

 

option - configure idle - setting ! 배경바꾸기

 

7

print(1)

print(-1)

print(3.14)

 

 

8 연산자1

print(1 + 2)

print(3 - 4)

print(2 * 3)

print(16 / 2)

 

 

9 연산자2

** 제곱

// 몫

% 나머지

print(1 ** 2) // 1

print(3 // 4) // 0

print(5 % 6) // 5

 

 

11 복합할당연산자

+=

-=

*=

/=

 

 

12 변수이름

a = 1

A = 2

다른 것!

대문자와 소문자 구분한다

 

 

13 문자열

'' 작은따옴표 안에!

"" 큰따옴표도 문자열이 되는데, 두 개 구분은 나중에! ***

 

- type

print(type(str)) => <class 'type'>

 

print(s1, s2) // s1 = m, s2 = n 일 때 => m n

 

 

14 문자열 연산

+ *

 

s1 = 'a' + 'b' + 'c' //abc

s2 = 'a' * 4 //aaaa

 

 

15 문자열 인덱싱

alpha = 'abcd'

alpha[0] = 'a'

 

 

16 문자열 음수 인덱싱

s = 'abcd' // 0 1 2 3 혹은 -4 -3 -2 -1

 

 

17, 18 슬라이싱 여러 문자 가져오기

s = 'abcd'

a:b ==> a이상 b 미만~!

s[1:2] // b

s[:4] // abcd

공백포함!!

 

s[2:] // cd

s[:] // abcd

 

 

19 .split()

s = 'a b c' //빈칸이 2개이상이어도 됨

s2 = s.split()

print(s2[0]) // a

s2 = ['a', 'b', 'c']

 

s = 'apple banana lemon'

s2 = s.split('a') 

s2 = ['', 'pple b', 'n', 'n', ' lemon']

 

 

20 .format() 중괄호!!

print('Life is {}'.format('Short!')) // 중괄호 안에 대입이 된다.

print('{}x{}={}'.format(2, 3, 2*3)) //2x3=6

 

%보다는(c언어) .format() 쓰기!

 

 

21 """문자열"""

print('''첫번째

두번째

세번째''')

 

해보자

 

print('첫번째 

=>오류

 

print('''첫번째

두번째

세번째''')

이러면 잘 출력됨

 

여러줄 문자열

""" 이나 '''를 쓰면 엔터 쳐도 계속 문자열 입력할 수 있다

 

 

22 end

print는 엔터가 default

end는 끝을 내가 지정하는 것

 

print('coding', end='\n')

print('coding', end='\-') //엔터 안쳐지는 것을 유의! 

print('coding', end=' ') //끝을 비도록! 엔터x

print('coding', end='\t')

 

 

23 포맷 연산자 %

%d 정수  %f 실수  %s 문자열

 

print('Life is %s' % 'Short!')

print('%d x %d = %d' % (2, 3, 2 * 3))

 

근데 뭐든 %s를 쓰면 다 문자열로 출력됨

 

 

24 이스케이프 코드 (파이썬 이스케이프 코드 구글 검색)

\n \t

print('\\n') // \n이 출력됨 그냥 \n을 하면 줄바꿈이 되기 때문!

 

' '

" "

print("I'm Yours") //겉에 큰따옴표

print('I\'m Yours') //겉에 작은따옴표

같은 표현!

 

 

25 주석

# 주석

 

 

26 재료를 모으는 방법

 

 

27 리스트

[요소1, 요소2, ...]

list1 = []

list2 = [1, 2, 3]

lsit3 = ['a', 'b']

 

28 리스트에 값 추가하기

.append() : 리스트에서만 사용가능한 메소드

list = []

list.append(1)

list.append(True) // 꼭 대문자

list.append('a')

=> list = [1, True, 'a']

 

 

29 값에 접근하기 : 인덱싱

list[0] = 2 변경가능

list[-1] = 'a'

 

 

30 값 제거하기

del list[0] // 인덱스1 은 0이되고 2는 1이된다.

 

슬라이싱

list[0:2] = 인덱스 0과 1을 가져옴~

전에 했던 것과 같다.

 

 

31 여러 값 가져오기

 

 

32 값 정렬하기

.sort()

list = [1, 3, 2, 4]

list.sort()

list = [1, 2, 3, 4]

 

 

33 값의 개수 세기

.count()

list = ['a', 'c', 'a']

list.count('a') // 2

 

 

34 키워드 in

list['a', 'b', 'c']

'a' in list // true

'f' not in list // true

 

 

35 튜플

튜플 값을 변경할 수 없다.

문자열 값 변경할 수 없다.

 

리스트 값을 변경할 수 있다.

 

(요소1, 요소2, ...)

요소1, 요소2, ... //괄호 없어도

 

t1 = ()

t2 = (1,) //튜플임을 알려주기 위해 , 콤마를 쓴다. (1) 이건 숫자로 인식함. 값이 한개니까

t3 = ('a', 'b', 'c')
t4 = 3.14, 'Python', True

 

print(type(t2)) // <class 'tuple'> 이라고 나옴. type ***

 

t5 = (1)

<class 'int'> 라고 나옴 print(type(t5)) 하면

 

 

36 튜플 사용 이유

값 절대 바뀌지 않게 하기 위해

코드 오염 방지

 

튜플이 리스트보다 빠름

 

 

37 패킹/언패킹

tuple = 3.14, 'Python', False

i, s, b = (123, 'abc', True)

 

 

38 for

조건 기준 반복 while

횟수 기준 반복 for

 

for 변수 in 순서열:

실행할 명령1

실행할 명령2

.

.

.

 

list = [1, 2, 3]

for count in list:

print(count)

 

 

39 IDLE 에디터 모드

여러 줄 쓰기 위해

FILE - new file - 빈화면 (file이 안보이면 내컴퓨터 검색창에서 idle 찾기)

코드 입력 후 저장

Run - Run Module (F5)

 

 

40 문자열 반복하기

str = 'coding'
for letter in str:
    print(letter)

 

동일!

 

 

41 들여쓰기

: 쓰면 들여쓰기 쓴다고 쓰면 됨. 코드블록. tab을 사용하는 것이 좋다~ (편하니까) == 띄어쓰기 4칸

 

 

42 range(stop) - 내장함수 bulit in function

for count in range(3): // 0, 1, 2라는 값을 가지고 있는 순서열이 된다.

print(range(3)) => range(0, 3) // range형 객체가 생성됨

 

print(list(range(3)) => [0, 1, 2] 리스트가 된다!

 

>>> type(range(3)) or type(range(0, 3))
<class 'range'>

 

 

43 range(start, stop)

for count in range(5, 10):

=> 5~9

 

 

44 for 중첩

for j in range(2):

for i in range(2):

print('i:{}, j:{}'.format(i, j))

 

구구단도 할 수 있음

 

 

45 리스트 컴프리헨션 comprehension

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
odd_numbers = []

for number in numbers:
    if number % 2 == 1:
        odd_numbers.append(number)

 

위 다섯줄과 같은 의미의 한 줄!

=>  odd_numbers = [number for number in numbers if number % 2 == 1]

 

 

46 논리 자료형

논리형 : True False

bool1 = True

bool2 = 1 == 2 // F

 

 

47 비교연산자

==

!=

>

<

>=

<=

 

cmp1 = 1 <= 2 < 3 // T

 

 

48 논리연산자

and or not

con1 = True and True //T

con2 = True and False //F

con3 = True or False //T

con4 = not True

 

 
49  논리연산자를 사용하는 이유
 
50 if + 문자열 비교도 ==
name = 'ann'
if name == 'ann':
    print('hi')
 
 
51 else 와 elif
if 조건:
명령
elif:
명령
else:
명령

 

 

52 while

조건으로 반복하기

while 조건:

 

count = 0
while count < 3:
    print(count)
    count += 1

 

 

53 pythontutor.com

http://pythontutor.com/live.html#mode=edit
실시간으로 프로그램 결과 보여줌

first forward 활용 디버깅

 

 

54 continue 넘어가기

count = 0
while count < 5:
    count += 1
    if count % 2 == 1:
        continue //바로 다시 조건문인 while문으로 돌아감
    print(count)

 

 

55 break 반복문 종료

while True:
    name = input('이름')
    if name == '종료':
        print('오케')
        break
    print('{}님 hi'.format(name))

 

 

56 입력받기 input() 내장함수

문자열로 받아온다 모두. 바로 아래 57 str 참고 type()

 

name = input('이름 입력')
print('안녕 {}'.format(name))

 

input() 하면 그냥 입력하길 기다리는것~

 

 

57 type()

자료형 확인 함수

 

name = input()
print('안녕 {}'.format(name))
print(type(name))

 

=>

 

dd
안녕 dd
<class 'str'>

 

 

58 자료형 바꾸기

age = int(input('나이 입력')) // int로 감싸준다
print('{}살'.format(age - 2))

 

>>> type(age)
<class 'int'>

 

>>> type(str(40))
<class 'str'>

 

>>> float(1)
1.0
>>> int(1.0)
1
>>> list('123')
['1', '2', '3']


>>> m = ['a', 'b'] //리스트이지만
>>> type(m)
<class 'list'>

>>> type(str(m)) //str을 씌어주면
<class 'str'> //['a', 'b'] 얘자체가 문자열인 문자가 됩니다 (m은 여전히 list임 몬지알지 m = str(m)해야 m이 str 되는 것)

 

 

59 딕셔너리

key value

{키:값, ...}

 

dict = {1: 'a', 2:'b'}

 

- key로 사용할 수 있는 자료형

 

값변경x (이뉴터블) ----------------key로 쓰인다

숫자 문자열 튜플(많이사용x)

 

값변경o (뉴터블)

리스트

 

- value로 사용할 수 있는 자료형

딕셔너리 리스트

 

 

60 dict에 값 추가하기

dict = {}

dict[1] = 11

dict[2] = 22

dict['a'] = 1

dict[key] = value

 

type(dict) => <class 'dict'>

 

 

61 dict 값 접근하기, 제거하기

dict[1] //key를 이용해 값 접근 => 11

 

del dict[key]

 

 

62 딕셔너리 메소드

- values()

dict = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
for val in dict.values():
    print(val)

그러면 v들만 나옴~

 

- keys()

 

- items()

dict = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
for key, val in dict.items(): // 변수가 두 개 필요
    print(key, val)

 

 

63 함수

64 함수 만들기

def 함수이름(인자1, 인자2, ...):

명령

 

return 결과1, 결과2, ...

 

인자와 return은 꼭 필요하지 않음

 

def sum(n1, n2):
    return n1 + n2

print(sum(1, 2))

 

 

65 함수의 종류

- 내장 함수

- 모듈 함수 : 다른 곳에서 만들어놓은 함수~ 라이브러리~

- 사용자정의 함수

 

 

66 함수를 사용하는 이유

 

67  여러 개 돌려주기

def sum_mul(n1, n2):
    return n1 + n2, n1 * n2

s, m = sum_mul(2, 3) // 언패킹
print(s)
print(m)

 

그런데 파이썬에선 결과값이 하나.

result = sum_mul(2, 3)

result = (5, 6) //튜플이네!!! 패킹이 된 튜플이 단 하나의 값으로 전달된 것이다!

type(result) => tuple!

 

 

68 독스트링 Docstring //문서화문자열? 문서와문자열

주로 코드 설명할 때?

 

def sum_mul(n1, n2):
    """입력값을 더하고 곱합니."""     <-------------
    return n1 + n2, n1 * n2

 

 

69 모듈

비슷한 함수 모아둔 함수 import하여 사용!

누군가가 미리 만들어놓은 함수 쓰자

 

 

70 random 모듈

- .choice() //랜덤으로 하나 선택

 

import random
fruits = ['apple', 'banana']
my_f = random.choice(fruits)
print(my_f)

- .sample() //몇개의값을 중복없이 선택

import random
f = ['apple', 'banana', 'lemon']
my_f = random.sample(f, 2)
print(my_f)

 

- .randint()

import random
my_int = random.randint(0, 2) //0, 1, 2 중 하나! 2도 포함임
print(my_int)

 

필요한 모듈을 이렇게 가져와서 쓰면 된다

 

 

71 객체

프로그래밍은 현실문제를 해결하기 위한 것.

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]