Development/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 [밍고의서식지:티스토리]