개발자 끄적끄적
파이썬 기초(if문, elif문, for문, while문, 함수, 모듈(Module), 패키지(Package), 클래스(Class), 생성자) 본문
파이썬 기초(if문, elif문, for문, while문, 함수, 모듈(Module), 패키지(Package), 클래스(Class), 생성자)
햏치 2023. 3. 9. 00:58<if 문>
- 파이썬은 들여쓰기가 매우 중요하다
- if문 다음에 '실행할 문장'은 if문 다음 줄에서 들여쓰기를 해서 작성
- 들여쓰기를 할 때는 Tab보다 Space Bar를 눌러 4칸정도 들여쓰기 권장
- 대화형 모드에서는 '실행할 문장' 모두 끝나고 Enter 2번 눌러야 if문이 끝나는 것으로 간주
ex)
a = 99
if a < 100 :
print("100보다 작군요.")
출력 결과 : 100보다 작군요.
ex)
>>>hungry = True
>>>if hungry :
... print("i'm hungry")
...
i'm hungry
>>>hungry = False
>>>if hungry :
print("i'm hungry")
...
... else :
print("i'm not hungry")
print("i'm sleepy")
...
i'm not hungry
i'm sleepy
- if 문에서 두 문장 이상을 실행하고자 할 때
ex)
a = 200
if a<100 :
print("100보다 작군요.")
print("거짓이므로 이 문장은 안 보이겠죠?")
print("프로그램 끝")
출력 결과 : 프로그램 끝
<if~else문>
- if 조건식 :
실행할 문장 1
else :
실행할 문장 2
ex)
a = 200
if a < 100 :
print("100보다 작군요.")
else :
print("100보다 크군요.")
출력 결과 : 100보다 크군요.
<if~else~if~else문>
- if문을 한 번 실행한 후 그 결과에서 if문을 다시 실행하는 것
- if 조건식 1 :
if 조건식 2:
실행할 문장 1
else :
실행할 문장 2
else :
실행할 문장3
ex)
a = 75
if a > 50 :
if a < 100 :
print("50보다 크고 100보다 작군요.")
else :
print("와~ 100보다 크군요.")
else :
print("에고~ 50보다 작군요.")
출력 결과 : 50보다 크고 100보다 작군요.
<if~elif~else문>
ex)
score = int(input("점수를 입력하세요 : ")) //input은 문자열로 입력받는다
if score >= 90 :
print("A")
elif score >= 80 :
print("B")
elif score >= 70 :
print("C")
elif score >= 60 :
print("D")
else :
print("F")
print("학점입니다. ^^")
<for문>
- 반복(루프)처리에는 for문을 사용한다
>>> for i in[1,2,3] :
... print(i)
<for문의 개념>
- 기본형식
ex)
for 변수 in range(시작값, 끝값+1, 증가값) :
이 부분을 반복
ex_1)range() 함수 사용과 내부적 변경
for i in range(0,3,1) : //range(3)은 range(0,3,1)과 같다 -> 0부터 3까지 1씩 증가시켜 -> 0, 1 2(끝 값은 포함X)
print("안녕하세요? for 문을 공부 중입니다.")
ex_2)
for i in[0,1,2] :
print("안녕하세요? for문을 공부중입니다")
- 중첩 for문의 기본 형식
ex)
for i in range(0,3,1) :
for k in range(0,2,1) :
print("파이썬은 꿀잼입니다. (i값 : %d, k값 : %d)" %(i,k))
출력 결과 :
파이썬은 꿀잼입니다. (i 값 : 0, k값 : 0)
파이썬은 꿀잼입니다. (i 값 : 0, k값 : 1)
파이썬은 꿀잼입니다. (i 값 : 1, k값 : 0)
파이썬은 꿀잼입니다. (i 값 : 1, k값 : 1)
파이썬은 꿀잼입니다. (i 값 : 2 ,k값 : 0)
파이썬은 꿀잼입니다. (i 값 : 2, k값 : 1)
- 반복문을 탈출시키는 break문
ex)
for i in range(1, 100) :
print("for문을 %d번 실행했습니다." %i)
break
출력 결과 : for문을 1번 실행했습니다.
<for문과 while문 비교>
- for문의 형식
for 변수 in range(시작값, 끝값+1, 증가값)
- for문은 반복할 횟수를 range() 함수에서 결정 후 그 횟수만큼 반복한다
- while문은 반복 횟수를 결정하기 보다는 조건식이 참일 때 반복하는 방식
ex)
i = 0
while i < 3 :
print("%d : 안녕하세요? while문을 공부 중입니다." %i)
i = i+1
출력 결과 :
0 : 안녕하세요? while문을 공부 중입니다.
1 : 안녕하세요? while문을 공부 중입니다.
2 : 안녕하세요? while문을 공부 중입니다.
<함수>
- 특정 기능을 수행하는 일련의 명령들을 묶어 하나의 함수로 정의할 수 있다
>>>def hello() :
.... print("Hello World!")
....
>>>hello()
Hello World!
- 함수는 인수를 취할 수 있다
- '+' 연산자를 사용하여 문자열을 이어 붙일 수 있다
>>> def hello(object) :
.... print("Hello" + object + "!")
....
>>> hello("cat")
Hello cat!
- 함수의 형식과 활용
ex)
##함수 선언 부분##
def plus(v1, v2) :
reuslt = 0
result = v1 + v2
return result
##전역 변수 선언 부분##
hap = 0
##메인 코드 부분##
hap = plus(100, 200)
print("100과 200의 plus() 함수 결과는 %d" %hap)
출력 결과 : 100과 200의 plus() 함수 결과는 300
<모듈>
- 함수의 집합
<모듈의 생성과 사용>
Modul1.py
##함수 선언 부분##
def func1() :
print("Module1.py의 func1()이 호출됨.")
def func2() :
print("Module1.py의 func2()이 호출됨.")
def func3() :
print("Module1.py의 func3()이 호출됨.")
A.py
import Module1
##메인 코드 부분##
Module1.lfunc1()
Module1.lfunc2()
Module1.lfunc3()
출력 결과 :
Module1.py의 func1()이 호출됨.
Module1.py의 func2()이 호출됨.
Module1.py의 func3()이 호출됨.
- 모듈명을 생략하고 함수명만 쓸 때 1행 형식
from 모듈명 import 함수1, 함수2, 함수3
또는
from 모듈명 import *
B.py
from Modue1 import func1, func2, func3 #또는 from Module import *#
##메인 코드 부분##
func1()
func2()
func3()
<패키지>
- 모듈이 하나의 *.py 파일 안에 함수가 여러 개 들어 있는 것이라면,
- 패키지(Package)는 여러 모듈을 모아 놓은 것으로 폴더의 형태로 나타낸다
- 모듈을 주제별로 분리할 때 주로 사용한다
ex)
패키지(폴더)
1. 모듈1(파일)
- 함수1
- 함수2
2. 모듈 2(파일)
- 함수3
- 함수4
<클래스>
- 클래스 정의에는 '__init__'라는 특별한 메서드가 있는데, 클래스를 초기화하는 방법을 정의한다
초기화용 메서디를 생성자(Constructor)라고도 하며, 클래스의 인스턴스가 만들어질 때 한 번만 불린다
또한, 파이썬에서는 메서드의 첫 번째 인수로 자신(자신의 인스턴스(객체))을 나타내는 self를 명시적으로 쓰는 것이 특징이다
class 클래스 이름 :
def __init__(self, 인수, ...) : #생성자
....
def 메서드 이름 1(self, 인수, ...) : #메서드 1
....
def 메서드 이름 2(self, 인수, ...) : #메서드 2
<클래스의 개념>
- 클래스의 모양과 생성
class 클래스 명 :
#이 부분에 관련 코드 구현
- 자동차를 클래스로 구현
class 자동차 :
#자동차의 속성
색상
속도
#자동차의 기능
속도 올리기()
속도 내리기()
- 자동차 클래스의 개념을 실제 코드로 구현
- 자동차의 속성은 지금까지 사용 한 변수처럼 생성(필드(Field))
*필드(Field) : 상태(속성)를 나타내는 변수
- 자동차의 기능은 지금까지 사용한 함수 형식으로 구현
- 클래스 안에서 구현된 함수는 함수라고 하지 않고 메서드라고 한다
ex)
##클래스 선언 부분##
class Car :
color = ""
speed = 0
def__init__(selt) : #생성자
self.color = "빨강" #메서드
self.speed = 0 #메서드, self.speed는 클래스에서 만들어진 인스턴스 변수이다
def upSpeed(self, value) : #메서드
self.speed += value
def downSpeed(self, value) :
self.speed -= value
##메인 코드 부분##
myCar1 = Car() #Car()라는 클래스를 호출, 생성자에 매개변수가 없기때문에 () 공백
myCar2 = Car()
print("자동차1의 색상은 %s이며, 현재 속도는 %dkm입니다." %(myCar1.color, myCar1.speed))
print("자동차2의 색상은 %s이며, 현재 속도는 %dkm입니다." %(myCar2.color, myCar2.speed))
<생성자>
- 생성자의 개념
- 인스턴스를 생성하면서 필드값을 초기화시키는 함수
- 생성자의 기본
- 생성자의 기본 형태 : __init__()라는 이름
- __init__()는 앞 뒤에 언더바(_)가 2개씩, init는 Initialize의 약자로 초기화 의미
- 언더바가 2개 붙은 것은 파이썬에서 예약해 놓은 것
- 프로그램을 작성 시 이 이름을 사용해서 새로운 함수나 변수명을 만들지 말 것
class 클래스 명 :
color = ""
speed = 0
def __init__(self) :
#이 부분에 초기화할 코드 입력
self.color = "빨강"
self.speed = 0
- 자동차 세 대의 인스턴스 생성 코드
myCar1 = Car()
myCa21 = Car()
myCar3 = Car()
- 메서드의 호출
myCar1.upSpeed(30)
myCar2.downSpeed(60)
ex) #self.name -> 인스턴스 변수, self -> 클래스 자신을 가리킨다
Class Man :
def __init(self, name) : #name(지역변수)
self.name = name #(위 name = name)
print("Initialized!")
def hello(self) :
print("Hello" + self.name + "!")
def goodbye(self) :
print("Good-bye" + self.name + "!")
m = Man("David") #m이라는 인스턴스를 생성하고 Man이라는 클래스를 부르고 name에 David 매개변수를 사용한다
m.hello()
m.goodbye()
출력 결과 :
Hello David!
Hello David!
Hello David!
'데이터 마이닝' 카테고리의 다른 글
분류 정오행렬 (0) | 2023.03.20 |
---|---|
데이터 마이닝 정의 및 목적 (0) | 2023.03.08 |
파이썬 기초(데이터형, 리스트, 딕셔너리, 슬라이싱) (1) | 2023.03.06 |