https://www.youtube.com/watch?v=y2dqelOMFuo&list=PL9HD6Lg78edZhaNaB6LG9u78KUzv06CJQ
분석하면서 배우는 파이썬 프로그래밍 시리즈2
if문
제어문의 프로그램 실행 흐름을 제어할 때 사용하는 조건문
종류 : 단일if문, if-else문, 다중if문, 중첩if문
주의점은
if 조건:
코드
elif 조건:
코드
else
코드
이렇게 else if가 elif로 줄어들었다는 점.
if문에 in을 쓸 수 있다
ex)
if 2 in (1,a,2):
코드
모듈
변수, 함수, 클래스를 모아놓은 파이썬 파일
import 모듈명
import 모듈명 as 별명
from 모듈명 import 모듈함수
from 모듈명 import 모듈함수 as 별명
form 모듈명 import *
while문
while 조건:
실행문
증감문
else:
실행문
도중 break문을 만나면 종료되고 else문은 실행되지 않는다.
continue문은 아래 코드를 실행하지 않고 while문 내의 처음코드로 돌아가 실행한다
무한루프의 경우 조건에 True를 넣으면 됨.
중첩 while문도 가능
윈도우 명령어를 실행하는 함수
import os
os.system('명령어' 또는 변수명)
clac 계산기, notepad 메모장, mspaint 그림판 등....
for문
증감형태: for i in range(1, 10):
리스트: for i in [1,2,3,4]:
range는 인수가 3개일 경우, 마지막 인수는 증가/감소할 개수를 의미함.
ex) range(1,10,2) => 1 3 5 7 9
for문에서도 continue와 break 사용 가능.
함수
1개 이상의 명령어를 모아 놓은 것. 코드중복을 제거하고 재사용성의 의미를 가짐.
라이브러리 함수 : 파이썬을 설치하면 제공됨 (print, id, input ... )
패키지 함수 : 패키지를 설치하면 제공됨
사용자 정의 함수 : 사용자가 직접 만들어서 사용하는 함수
함수의 종료시점 : 실행문들이 끝났거나, 리턴문을 만났을 때.
함수만들기
def 함수명(매개변수):
실행문
return 값 < 생략가능
다른 데 있는 함수를 쓰려면 import 한 후에 해당파일.함수명 으로 호출
1. 매개변수와 리턴값이 있는 함수
2. 매개변수와 리턴값이 없는 함수
3. 매개변수는 있고 리턴값이 없는 함수
4. 매개변수는 없고 리턴값이 있는 함수 ...
len함수를 쓰지 않고 문자열 길이를 구하기 : 문자열을 for문으로 반복하여 count를 +1하여 구한다.
함수의 인수의 개수가 정해지지 않은 경우
def func(*args):
print(args)
*args로 받아 개수 제한 없이 받을 수 있다
( for i in args: 로 순서대로 출력하거나 비교하거나 할 수 있고 args[0] 이렇게 순서대로 접근도 가능 )
return 1, 2, 3
이렇게 3개의 리턴값이 있을 때 이것을 변수 하나로 받으면 기본적으로 튜플 자료형으로 받게 된다.
ex)
def func():
return 1, 2, 3
a = func()
a, *b = func()
a, b, c = func()
=> 하나로 받으면 튜플, 두 개로 나누어 받으면 각 자료형과 튜플, 세개로 나누어 받으면 각 자료형으로.
def func(**kargs):
print(kargs)
**kargs로 받는 경우 딕셔너리 형태로 데이터를 받게 된다. keyword arguments 약자.
func(**strD) 이렇게 호출시에도 **를 붙여서 호출하거나 딕셔너리 데이터를 직접 넣어주어야 함.
ex) func(name='이름', age=32, id='ade2018')
함수의 디폴트 인수
def func(a=1, b=3):
print(a)
func() 이렇게 아무 인수도 없이 호출할 때 a는 1이 된다
func(a=65) 이렇게 이름을 지정하여 호출할 수도 있음.
전역변수 : 모든 함수에서 사용할 수 있는 변수
지역변수 : 함수 내에서만 사용하는 변수
* 전역변수를 함수 내에서 읽을수는 있으나 수정할 수 없다. 단, global 키워드를 사용하면 전역변수를 함수 안에서 생성, 수정할 수 있다.
special variables
디버그 모드로 실행했을 때 확인 가능. 파이썬 시작시 무조건 만들어지는 변수들.
지역변수에 global를 붙이면 전역변수(function variables)가 됨.
디버그 모드에서 보면, global을 붙인 b만 전역변수로 나타나 있다
(a가 없는 이유는 중단점 위치가 func 바깥이라서)
람다함수 : 이름이 없는 익명함수. 간단히 사용할 때 사용하는 함수.
ex) lambda 인수리스트 : 표현식
lambda test: x*5
=> x를 *5 하여 리턴
람다함수를 쓰는 이유 ?
=> 리스트에 넣을 수 있다
리스트에 넣어 출력해본 결과
인수가 두 개인 람다함수.
args로 받을수도 있다.
그런데... lambda 함수는 args를 for문등으로 내부에서 계산할 수는 없는것일까? for 쓰니까 에러가 나서...
이건 좀 궁금증이 있는데 검색을 잘못하는지 안나옴
getwch
=> 사용자입력을 받는데 input과 달리 엔터를 치지 않아도 인식한다.
\r 또는 \n 엔터를 의미
\003 Ctrl + c 취소 의미
\b 백스페이스. 입력을 지움
파일 입출력
파일 열기(쓰기모드)
변수명 = open("파일명", "열기모드 명령어", 옵션(생략가능))
file = open("filename", "w")
기존파일이 있으면 덮어씌우고 없으면 새 파일이 생성된다
파일 처리(데이터 작성)
파일객체명.write("데이터")
file.write("파일 데이터")
파일 닫기
file.close()
파일 데이터 읽어오기
파일이 존재하지 않으면 에러 발생
readF = open('test.txt', 'r', 옵션(생략가능))
read 안에 size를 주면 그만큼 읽어온다
readF.close()로 닫아주기
파일 데이터에 추가
file = open('test.txt', 'r', 옵션(생략가능))
file.write('추가할데이터')
file.close()
with문
with문을 이용해 파일을 열면 파일을 자동으로 닫아주므로 close해주지 않아도 된다
with open('파일명', '모드 명령어', 옵션) as 객체변수명:
파일처리부분
파일 복사
1. 파일1을 읽기 전용으로 열어서
2. 쓰기 전용으로 연 파일2에 쓴다
file = open('test.txt', 'w', encoding='utf8')
인코딩 설정은 옵션인수에 해준다.