본문 바로가기
스터디/데이터 분석 공부

3시간만에 끝내는 파이썬 기초(김왼손님 강의 추천)

by YOON TONG 2021. 7. 29.
반응형

유데미나 코세라에는 분야별로 다양한 강의가 올라와있어요.

유료강의는 수료증도 발급해주는데 저는 일단 맛보기로 들어보는거라 일단 무료강의부터 시작했어요

인포테크가 워낙 유명하니 프로그래밍 언어 중 쉽다는 파이썬을 배워보기로 결심했어요

유데미의 수많은 기초 파이썬 강의중 김왼손(lefty)님의 강의를 선택했는데 강력추천합니다!!목소리도 좋으시고, 설명을 잘해주셔서 재밌게 따라하고 있어요.강사소개란을 보니 유투버도 하시더라구요. 불타는 배움의 의지로 구독했어요ㅋㅋㅋ

 

지금 섹션4까지 들었는데, 운동 한번 하고나서 저녁때 완강을 해야겠어요......


1. 인트로

- 프로그램의 기본 구조 : 순차(순서대로 진행), 선택(조건에 따른 흐름), 반복(같은 명령 수행)

- 파이썬의 장점 : 쉬운 언어 문법, 간단명료해서 개발속도가 빠름. 

- 범용 프로그램 : 구글, 나사, 데이터분석용, 게임개발(문명4, 심즈4..), 보안 다양한 곳에서 사용

* stack overflow: 코딩언어에 관한 커뮤니티 사이트

 

Python 프로그램 다운받아 설치하면,

- IDLE 파일 : 초보자를 위해 따로 만들어진 것으로 앞으로 많이 쓰게 될 것,

               파일창 예쁘게 꾸미고 싶으면 Options > Configure IDLE > Highlights Theme 선택

 

 

 

2. 프로그램의 기본재료

<숫자형 자료형>

  • 숫자형 : 정수(음수,양수), 실수(3.14) 
  • 사칙연산 : + - * /   (숫자형의 사칙연산 기능. 나누기에서는 코딩스타일에 맞게 많이들 띄어쓰기 사용 )
  • 제곱, 몫, 나머지 : **, //, % 
숫자형 연습하기
>>> print(1)
1
>>> print(-1)
-1
>>> print(3.14)
3.14
>>> print(4096)
4096
>>> print(10000000)
10000000
>>> print(3.1429152)
3.1429152
>>> 
>>> 
사칙연산 연습하기
>>> print(1+2)
3
>>> print(852-134)
718
>>> print(2*7)
14
>>> print(25/4)
6.25
>>> print(25 / 4)
6.25
>>> 
>>> 
제곱, 몫, 나머지 연습하기
>>> print(2**3)
8
>>> print(5/8)
0.625
>>> print(5//8)
0
>>> print(5 % 8)
5
>>> 

 

  • 변수 : 값을 저장하는  공간. = 연산자를 사용하여 왼쪽값을 오른쪽에 저장/할당한다는 의미.
  • 복합 할당연산자 : 연산을 하며 할당까지 동시에 진행. += -= *= /=

                               i = i + 1   => i + = 1

                               count = count + 1

  • 변수이름짓기 : 임의로 지어도 상관은 없지만, 모두가 이해할 수 있도록 작명해야 함
변수의 의미
>>> my_int = 1
>>> print(my_int)
1
>>> 
>>> my_str =
SyntaxError: invalid syntax
>>> my_str = 'Python'
>>> print(my_str)
Python
>>> my_bool = True
>>> print*my_bool)
SyntaxError: unmatched ')'
>>> print(my_bool)
True
>>> 
>>> 
복합 할당연산자  
>>> count = 0
>>> print(count)
0
>>> count += 1
>>> print(count)
1
>>> count = count + 1
>>> print(count)
2
>>> count -=1
>>> print(count)
1
>>> count *= 2
>>> print(count)
2
>>> 
>>> 
변수이름짓기
>>> 1my_int = 1
SyntaxError: invalid syntax 변수이름이 숫자로 시작하면 오류
>>> my_int1 = 1
>>> my int = 1
SyntaxError: invalid syntax 변수이름에 공백 사용하면 오류(언더바를 사용할 것)
>>> a = 1
>>> print(a)
1
>>> A = 3
>>> print(A)
3
>>> 

 

 

<문자열 자료형>

문자열(string) : 작은따옴표, 큰따옴표를 사용. type은 

>>> my_str1 = 'a'
>>> print(my_str1)
a
>>> my_str2 = '3.14'
>>> print(my_str)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print(my_str)
NameError: name 'my_str' is not defined
>>> print(my_str2)
3.14
>>> 
>>> 
>>> print(type(my_str2))
<class 'str'>
>>>
>>> my_str4 = 'coding'
>>> my_str3 = "coding"
>>> 
>>> print(my_str3, my_str4)
coding coding

문자열 연산하기 : +(문자열끼리 연결)  *(문자열 반복)

 

>>> my_str1 = 'a' + 'b' + 'c'
>>> print(my_str1)
abc
>>> my_str2 = 'cod' + 'ing'
>>> print(my_str2)
coding
>>> 
>>> my_str3 = 'abc' *4
>>> print(my_str3)
abcabcabcabc
>>> 

 

 

<Method>

인덱스 : 문자열의  '하나'의 문자 위치(0부터 시작), 이걸 찾는 과정이 '인덱싱'

>>> alphabet = 'abced'
>>> print(alphabet[0])     문자의 위치는 대괄호[] 사용
a
>>> 
>>> print(alphabet[3)]
SyntaxError: closing parenthesis ')' does not match opening parenthesis '['
>>> 
KeyboardInterrupt
>>> print(alphabet[3])
e
>>> 
>>> print(alphabet)
abced
>>> alphabet = 'abcde'
>>> print(alphabet[-1])      뒤에서부터 추출도 가능함(-1부터 시작)
e
>>> print(alphabet[-5])
a

 

슬라이싱 : 문자열에서 '여러개'의 문자 추출

>>> my_str = 'Hello Python!'
>>> print(my_str[0:1])
H
>>> print(my_str[0:7])  위치는 공백도 포함됨. 7번쨰 이전까지만.    
Hello P
>>> 
>>> 
>>> print(my_str[:5])      처음과 끝은 숫자 생략 가능
Hello
>>> print(my_str[6:])
Python!

 

 

문자열 분리하기 : 특정 자료형만 사용할 수 있는 함수 .split()

문자열 포맷팅 : .format() 잘 알아두기!!

>>> fruit_str = 'apple banana lemon'
>>> fruits = fruit_str.split()     공백을 기준으로 분리한다는 의미. 괄호안에 문자를 넣으면 해당문자 기준으로 분리.
>>> print(fruits)
['apple', 'banana', 'lemon']
>>> 
>>>
>>> print('Life is {}.format('Short!'))     중괄호안에 .format() 안의 자료를 순서대로 대입하겠다는 method.
Life is Short!
>>> print('{} x {} = {}' .format(2, 3, 2*3))
2 x 3 = 6
>>> 

 

 

여러줄 문자열: """ 문자열 """ 큰따옴표 3개씩

>>> print('첫 번째')
첫 번째
>>> print('''첫 번째''')
첫 번째
>>> print('''첫 번째
두 번째
세 번째''')
첫 번째
두 번째
세 번째
>>> 

 

 

출력의 끝 지정하기: print('', end='')

이스케이프 코드 : 특정기능을 하는 문자열의 조합 ( 백슬래시n, 백슬래시t)

print('coding', end='') 
print('coding', end='-') 
print('coding', end='백슬래쉬n)   줄 바꾸기
print('coding', end='백슬래쉬t')    탭 기능

>>> print('탭\n탭')


>>> print('줄바꿈\n줄바꿈')
줄바꿈
줄바꿈
>>> print('\\n')    백슬래시 2번 쓰기. 백슬래시n앞에 백슬래시를 하면 얘네를 문자화하겠다는 의미
\n
>>> print('\\t')
\t
>>> print('I\'m Yours')  큰따옴표를 사용해도 되지만 백슬래시를 써서 '를 문자화해도 됨
I'm Yours
>>> 

 

 

포맷 연산자

% 사용 ( 참고로 포맷 method에서는 중괄호를 사용했었음)

C 스타일 포맷팅 %d (정수) %f(실수) %s(문자열)

>>> print('%d x %d = %d' % (2,3,2*3))
2 x 3 = 6
>>> print('Life is %s' % 'Short!')
Life is Short!
>>> 정석의 방법은 아니지만 많이들 사용함

 

주석 : 이해를 돕기 위해 # 이용해 컴퓨터가 아닌 사람들을 위한 설명

>>> print('안녕!')
안녕!
>>> print('안녕!') #간단한 인사말
안녕!

 

 

 

 

3. 재료 모으기

리스트 자료형

가장 많이 쓰이는 재료 모으는 방법 '리스트'

리스트 = [요소1, 요소2, ...]

 

  • 빈 리스트에 값 추가하기 : .append() 리스트에서만 사용할 수 있는 함수.
>>> my_list = []                라면끓이기 전 냄비가 필요한 것처럼 공백의 대괄호[] 두기 
>>> my_list.append(123)
>>> print(my_list)
[123]

>>> my_list.append('abc')
>>> print(my_list)
[123, 'abc']

>>> my_list.append(True)
>>> print(my_list)
[123, 'abc', True]
>>> 

 

  • 인덱싱 : 리스트에서는 각 '요소'에 접근하는 방법. 주어진 값을 대체하는 방법
>>> my_list = [123, 'abc', True]
>>> print(my_list[0])
123
>>> print(my_list[-1])
True
>>> print(my_list)
[123, 'abc', True]
>>> my_list[0] = 3.14
>>> print(my_list)
[3.14, 'abc', True]
>>> my_list[1] = 'ABC')
SyntaxError: unmatched ')'
>>> my_list[1] = 'ABC'
>>> print(my_list)
[3.14, 'ABC', True]
  • 값 제거하기: del
>>> my_list = [123, 'abc', True]
>>> del my_list[0]
>>> print(my_list)
['abc', True]
>>> del my_list[0]         일단 지워지면 리스트의 순서도 바뀜.
>>> print(my_list)
[True]

 

  • 슬라이싱(여러 값 가져오기) : 원본 자료에서 복사해서 가져오는 거라서 원본은 변화 없음.
>>> my_list = ['a', 'b', 'c']
>>> print(my_list[:1])
['a']
>>> print(my_list[1:3])
['b', 'c']

 

 

  • 값 정렬하기 : .sort()
>>> my_list = [4,1,3,2]
>>> my_list.sort()
>>> print(my_list)
[1, 2, 3, 4]
>>> 
>>> my_list2 = ['c', 'b', 'd', 'a']
>>> my_list2.sort()
>>> print(my_list2)
['a', 'b', 'c', 'd']

 

  • 요소의 갯수 세기 : .count()
>>> my_list =['a', 'c', 'a', 'b']
>>> print(my_list.count('a'))
2
>>> print(my_list.count('b'))
1

논리형 자료형

in / not in : 리스트 안에 해당 요소가 있는지 없는지 T/F로 체크하는 방법

>>> my_list = ['a', 'b', 'c', 'd']
>>> print('a' in my_list)
True
>>> print('f' not in my_list)
True

 

튜플 자료형

리스트와 비슷하지만, 소괄호사용

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

>>> my_tuple = ()
>>> print(my_tuple)
()
>>> my_tuple2 = (1,)
>>> print(type(my_tuple2))
<class 'tuple'>
>>> 
>>> my_tuple1 = (1)
>>> print(type(my_tuple1))
<class 'int'>
>>> 
>>> my_tuple3 = ('a', 'b', 'c')
>>> print(my_tuple3)
('a', 'b', 'c')
>>> 
>>> my_tuple4 = 3.14, 'Python', True)
SyntaxError: unmatched ')'
>>> my_tuple4 = 3.14, 'Python', True
>>> print(my_tuple4)
(3.14, 'Python', True)
>>> print(type(my_tuple4))
<class 'tuple'>

 

패킹/언패킹

패킹 : 여러개의 값을 묶는 것

>>> my_tuple = 3.14, 'Python', False
>>> print(my_tuple)
(3.14, 'Python', False)
>>> i,s,b = (123, 'abc', True)
>>> print(i,s,b)
123 abc True

 

 

 

4. 횟수로 반복하기

'반복'을 실행하는 2가지 방법 : 횟수로(for), 조건으로(while)

반복문을 사용하면 가독성이 좋아짐

 

for 변수 in 순서열 : 실행할 명령1, 2,...

 

숫자열로 실습

IDLE > file > new file > 새창에서 리스트 쓰고 저장(단축키Ctrl+S) > run > run module > 한번에 실행(단축키F5)됨을 볼 수 있음

my_list = [1,2,3]
for count in my_list:
    print('횟수:', count)



<Run module에서 실행된 모습>
Python 3.9.6 
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/list_count.py =
횟수: 1
횟수: 2
횟수: 3
>>> 

문자열로 실습

my_str = 'coding'
for letter in my_str:
    print('문자:' , letter)


== RESTART: C:/Users/AppData/Local/Programs/Python/Python39/list_str.py ==
문자: c
문자: o
문자: d
문자: i
문자: n
문자: g
>>> 

* 들여쓰기 

공통적으로 띄어쓰기4칸 (어떤식으로든 들여쓰기하면 되는데 한번 이렇게 쓰면 통일시켜줘야 에러안남)

 

내장함수(파이썬 기본 제공 함수 built in function)

순서열 만들기 : range(stop)

my_str = 'coding'
for count in range(3):
    print('횟수:', count)

== RESTART: C:/Users/AppData/Local/Programs/Python/Python39/list_stop.py =
횟수: 0
횟수: 1
횟수: 2
>>> 
>>> 
>>> 
>>> print(range(3))
range(0, 3)
>>> 
>>> print(list(range(3)))      리스트형태로 바꾸주면,, 
[0, 1, 2]
>>> 

 

  • 순서열 : range(start, stop)
for count in range(3:5):
    print('횟수:', count)
  •  순서열 중첩하기 
my_list = [0,1]
for j in range(2):
    for i in range(2):
        print('i:{}, j:{}' .format(i,j))


=== RESTART: C:/Users/AppData/Local/Programs/Python/Python39/format.py ===
i:0, j:0
i:1, j:0
i:0, j:1
i:1, j:1
>>> 

 

  • 리스트 컴프리헨션(Comprehension 내포)
numbers = [1,2,3,4,5,6,7,8,9,10]
odd_numbers = []

for number in numbers:
    if number % 2 == 1:                    넘버를 2로 나누었을때 나머지(%)가 1이면: 
        odd_numbers.append(number)          홀수에 추가를 해라


위 식을 리스트 컴프리헨션을 사용하면 한줄로 가능

odd_numbers = [number for number in numbers if number % 2 ==1]
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)
        print(odd_numbers)


두번째)
for number in numbers:
    if number %2 == 1:
        odd_numbers.append(number)
print(odd_numbers)



세번째) 리스트 컴프리헨션 
odd_numbers =[number for number in numbers if number % 2 == 1]
print(odd_numbers)



>>> 
첫번째)
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/odd_numbers.py
[1]
[1, 3]
[1, 3, 5]
[1, 3, 5, 7]
[1, 3, 5, 7, 9]
>>> 
두번쨰)
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/odd_numbers.py
[1, 3, 5, 7, 9]
>>> 
세번째)
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/odd_numbers.py
[1]
[1, 3]
[1, 3, 5]
[1, 3, 5, 7]
[1, 3, 5, 7, 9]
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9]
[1, 3, 5, 7, 9]
>>> 

 

반응형

댓글