● 패키지

https://benn.tistory.com/46 참조

패키지(packages)란 관련 있는 모듈의 집합이다.
패키지는 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다.
* 모듈 이름이 A.B라면 A는 패키지 이름이되고 B는 A패키지의 모듈이 된다.
* 파이썬에서 모듈은 하나의 파이썬 파일이다. *.py

 


 

- 패키지 만들기

※ game 패키지 예제

C:/doit/game/__init__.py
C:/doit/game/sound/__init__.py

C:/doit/game/sound/echo.py
# echo.py
def echo_test():
   print("echo")

C:/doit/game/graphic/__init__.py

C:/doit/game/graphic/render.py
# render.py
def render_test():
   print("render")

 

** 생성한 패키지를 실행하기 전 game패키지를 참조할 수 있도록 명령 프롬포트 창에서

set 명령어로 PYTHONPATH 환경 변수에 디렉토리 추가 필요


- 패키지 안의 함수 실행

1) echo 모듈을 import 해서 실행하기

echo 모듈은 echo.py 파일이다.
import game.sound.echo
game.sound.echo.echo_test()
>> echo

 

 

2) echo 모듈이 있는 디렉터리까지 from.. import 실행

from game.sound import echo
>> echo.echo_test() echo

 

 

3) echo 모듈의 echo_test 함수를 직접 import 하기

from game.sound.echo import echo_test
echo_test()
>> echo

 

※ import game을 수행하면 game 디렉터리의 __init__.py에 정의된 것만 참조 가능

** import game.sound.echo.echo_test  함수 사용 불가


● __init__.py 용도

__init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다.
만약 gaem, sound, graphic 등 패키지에 포함된 디렉터리에 __init__.py 파일이없다면 패키지로 인식 불가하다.
** python 3.3 버전부터 __init__.py 파일이 없어도 패키지로 인식된다.

 

'Language > Python' 카테고리의 다른 글

Python - 모듈  (0) 2024.05.08
Python - 클래스  (0) 2024.05.07
Python - 프로그램의 입력과 출력  (0) 2024.05.07
Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07

● 모듈

파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다.

 

- 모듈 만들기

# mod1.py
def add(a, b):
    return a + b

def sub(a, b): 
    return a-b

 

위와 같이 add와 sub 함수만 있는 파일 mod1.py를 만들고 C:/pythonworks 에 저장

해당 mod1.py 파일이 모듈이다.


- 모듈 불러오기

import 모듈이름
import mod

** mod.py를 생성했다는 의미

** import 시 .py를 생략하고 mod만 써준다.

import mod1
print(mod1.add(3, 4)) # 7
print(mod1.sub(4, 2)) # 2

** mod1.py 파일에 있는 add, sub 함수를 사용하기 위해서는 mod1.add(파일명.함수명)처럼

모듈 이름 뒤 도트(,) 붙이고 함수명을 사용하면 된다.

import는 현재 디렉터리에 있는 파일이나 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.
파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말한다.

 


- 모듈이름 없이 함수명만 사용하고 싶을 때는?

from 모듈이름 import 모듈함수
from mod1 import add, sub
fomr mod1 import *

 


- if __name__ == "__main__":의 의미

# mod1.py
def add(a, b): 
    return a+b

def sub(a, b): 
    return a-b

print(add(1, 4))
print(sub(4, 2))

 

add(1, 4), sub(4 ,2) 결과를 출력하는 문장 추가 후 mod1.py 실행 시 아래와 같이 확인된다.

mod1.py 파일의 add, sub 함수만 사용하기 위해선 어떻게 해야할까?

 

# mod1.py
def add(a, b): 
    return a+b

def sub(a, b): 
    return a-b

if __name__ == "__main__":
    print(add(1, 4))
    print(sub(4, 2))

 

if __name__== "__main__": 을 사용하면 c:/pythonworks mod1.py처럼 직접 파일을 실행헀을 때

if __name__== "__main__": 은 참이 되어 if문 다음 문장이 수행된다.

이와 반대로 대화형 인터프리터나 다른 파일에서 해당 모듈을 불러 사용할 때는

if __name__== "__main__":  거짓이 되어 if문이 수행되지 않는다.

 

 

__name__ 변수란?

파이썬의 __name__ 변수는 파이썬 내부적으로 사용하는 특별한 변수명이다.

c:/pythonworks mod1.py 처럼 mod1.py 파일을 실행할 경우
mod1.py의 __name__ 변수는 __main__ 값이 저장된다.

하지만 파이썬 셸이나 다른 파이썬 모듈에서 mod1을 import 할 경우에는
mod1.py의 __name__ 변수에 mod1.py의 모듈 이름인 mod1이 저장된다.

 


- 클래스나 변수 등을 포함한 모듈

 

# mod2.py
PI = 3.141592

class Math: 
    def solv(self, r): 
        return PI * (r ** 2) 

def add(a, b): 
    return a+b

 

** mod2.PI 를 입력해소 mod2.py 파일에 있는 PI 변수의 값을 사용할 수 있다.

 

** mod2.py에 있는 Math클래스를 사용할 수 있다.

 

** mod2.py에 있는 add 함수 또한 사용이 가능하다.

 


 

- 다른 파일에서 모듈 불러오기

# modtest.py
import mod2
result = mod2.add(3, 4)
print(result)

 

** 다른 파이썬 파일에서도 import mod2 로 mod2 모듈을 불러와 사용할 수 있다.

** 단, modtest.py 파일과 mod2.py 파일이 동일한 디렉터리(c:/pythonworks)에 있어야 한다.

'Language > Python' 카테고리의 다른 글

Python - 패키지  (0) 2024.05.09
Python - 클래스  (0) 2024.05.07
Python - 프로그램의 입력과 출력  (0) 2024.05.07
Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07

● 클래스(class) 와 객체

https://wikidocs.net/28 참고

 

과자 틀 = 클래스
과자 틀로 찍어 낸 과자 = 객체

 

객체 지향언어는 클래스를 가지고 있다. 

클래스라는 틀을 통해서 객체를 생성하게 된다.
많이 사용하는 기능을 클래스로 정의하여 코드의 재사용성을 높인다. 
클래스를 통해서 생성된 객체들은 각각 독립적이다.

** instace : 메모리에 생성된 객체

 

객체와 인스턴스의 차이

클래스로 만든 객체를 '인스턴스'라고도 한다.

객체와 인스턴스의 차이는 무엇일까?
a = Cookie()로 만든 a는 객체이고 a 객체는 Cookie의 인스턴스다.
즉, 인스턴스는 객체(a)가 어떤 클래스(Cookie)의 관계 위주로 설명할 때 사용한다.
a = Cookie의 경우 'a는 Cookie의 인스턴스'라 표현

클래스 예시)

** Calculator 클래스로 만든 계산기로 결과값과 상관 없이 독립적인 값을 유지한다.

** 계산기 대수가 늘어나도 객체를 생성하면 되기 때문에 간단하게 프로그램 작성이 가능하다.


- 사칙연산 클래스 만들기

- 함수를 만들 때 소스 코드 작성 방법
def 함수이름(매개변수):
      수행문
      ...

 

class FourCal:
   def setdata(self, first, second):     #메소드 매개 변수
      self.first = first                               # 메소드 수행문
      self.second = second                   # 메소드 수행문

** 클래스 안에 구현된 함수는 메소드(method)라 한다.
** setdata 메소드는 매개변수로 self, first, second 3개 입력값을 받는다.
** 메소드의 첫 번째 매개변수 self는 특별한 의미 갖는다.

 


a = FourCal()
a.setdata(4,2)

** 객체를 이용해 클래스의 메소드를 호출하기 위해선 a.setdata(4,2)와 같이 도트(.) 연산자 사용 필요

 

※ setdata 메소드에는 self, first, second 총 3개의 매개 변수가 필요하나 실제로 전달된 값은 a.setdata(4,2)처럼

2개의 값만 전달하였는데 사유는 아래 이미지를 확인하면 쉽게 알 수 있다.

https://wikidocs.net/28 참고

**  a.setdata(4,2)는 첫 번째 매개변수 self에 setdata 메소드를 호출한 객체 a가 자동으로 전달 된다.

** self가 아닌 다름 이름을 사용해도 상관 없다.


https://wikidocs.net/28 참고

 

** FourCal클래스 : 두 수를 입력 받아서 , + - * / 를 처리하고 리턴하는 역할

1. 두수를 입력받는 메소드  setData(a,b)
2. + 연산을 처리하는 메소드 add()
3.  - 연산을 처리하는 메소드 sub()
4.  * 연산을 처리하는 메소드 mul()
5.  / 연산을 처리한느 메소드 div()

 

class FourCal:
     def setdata(self, first, second):
         self.first = first # 자바의 this.first = first 같은 개념
         self.second = second
     def add(self):
         result = self.first + self.second
         return result
     def mul(self):
         result = self.first * self.second
         return result
     def sub(self):
         result = self.first - self.second
         return result
     def div(self):
         result = self.first / self.second
         return result

a = FourCal() #FourCal클래스 타입의 객체 생성
b = FourCal()
a.setdata(4, 2) #(self=a객체, first=4, second=2)
b.setdata(3, 8)

a.mul()

● 생성자

객체가 생성될 때 딱 한 번 동작하여 객체를 생성시키는 메소드
생성자가 하는 역할 : 멤버변수의 초기화, 부모 클래스의 초기화 호출

 

class FourCal:		
    def __init__(self, first, second): #생성자  __init__(self, 매개변수):
        self.first = first
        self.second = second
    def setData(self, first, second):
        self.first = first # 자바의 this.first = first 같은 개념
        self.second = second
    def add(self):
        result = self.first + self.second # result = a.first 4 + a.second 2
        return result # 6
    def sub(self):
        result = self.first - self.second 
        return result
    def mul(self):
        result = self.first * self.second
        return result
    def div(self):
        result = self.first / self.second
        return result

a = FourCal(4,2)
a.add() # 6
a.setData(8,4)
a.add() # 12

** __init__ 메소드의 매개변수에도 self, first, second 값이 전달되어야 한다.


- 자바 클래스 이름과 동일한 리턴형이 없는 메서드
   

 pulbic FourCal(int first, int second){
        this.first = first;
        this.second = second;
    }


● 클래스의 상속

상속(Inheritance)이란 '물려받다'란 뜻으로 '재산을 상속받다'와 같은 의미
class 클래스명(상속할 클래스명)

 

class MoreFourCal(FourCal):
	    def pow(self):
	        result = self.first ** self.second ##제곱
	        return result
a = MoreFourCal(4, 2)
a.pow()+

** 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.


● 메소드 오버라이딩

부모 클래스(상속한 클래스)에 있는 메소드를 동일한 이름으로 다시 만드는 것
즉 부모의 메소드를 자식의 필요에 맞게 메소드를 재정의 하는 방법
** 함수의 구현부만 다르게 정의한다.

 

class SafeFourCal(FourCal):	
    def div(self):
        if self.second == 0:
            return 0
        else:
            return self.first / self.second
a = SafeFourCal(4,0)
a.div() # 0

** 0으로 나눌 경우 기본적으로 ZeroDivisionError가 발생하나,

if self.second==0: return 0 으로 인해 오류가 발생하지 않고 0값 리턴

'Language > Python' 카테고리의 다른 글

Python - 패키지  (0) 2024.05.09
Python - 모듈  (0) 2024.05.08
Python - 프로그램의 입력과 출력  (0) 2024.05.07
Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07

type은 바로 뒤애 적힌 파일 이름을 인수로 받아 해당 파일의 내용을 출력해주는 명령어다.

 

대부분의 명령 프롬포트에서 사용하는 명령어는 아래와 같이

인수를 전달하여 프로그램을 실행하는 방식이다.

type python.txt
명령어 [인수1, 인수2 ...]

 


- sys 모듈 사용

파이썬에서는 sys모듈을 사용해서 프로그램에 인수를 전달할 수 있다.
sys 모듈을 사용하려면 import sys를 해야한다.

 

예시)

import sys
args = sys.argv[:]
for i in args:
    print(i)

** cmd 창을 통해 출력 가능

 

sys 모듈의 argv는 프로그램 실행 시 전달된 인수를 의미한다.

 

즉, 다음과 같이 입력했다면 argv[0]은 파일 이름 sys1.py가 되고

argv[1]부터는 뒤에 따라오는 인수가 차례대로 argv의 요소가 된다.

'Language > Python' 카테고리의 다른 글

Python - 모듈  (0) 2024.05.08
Python - 클래스  (0) 2024.05.07
Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07
Python - 함수  (0) 2024.05.02

● 파일 읽고 쓰기

1. c 드라이브에 pythonworks 폴더 생성
2. 파일 생성
* 파일 객체 = open(파일경로 + 파일이름, 파일열기 모드)

- 파일열기 모드

 

※ 파일 열기모드 표

파일열기 모드 설명
r (read) 읽기모드 - 파일을 읽기만 할 때 사용, 파일이 존재하지 않으면 error 발생
w (write) 쓰기모드 - 파일에 내용을 쓸 때 사용, 파일이 존재하지 않으면 새파일 작성 후 저장
a (append) 추가모드 - 파일의 새로운 내용을 추가할 때 사용, 파일이 존재하지 않으면 새파일 작성 후 저장

 

파일 생성 예시)

f = open("c:/pythonworks/새파일.txt",'w') # 파일 생성 / 내용 없음.
f.close()

** 새파일.txt가 python 폴더 내에 생성된 것을 확인

** #C:\pythonworks < 윈도우 명령어 // 파이썬은 \역슬래시가 안닌 / 슬래시 사용 필요


- 파일을 쓰기 모드로 열어 내용 작성

 

예시)

 

▼메모장 내용▼

** c드라이브 pythonworks폴더 내에 새파일.txt 파일 내에 data에 입력한 내용 작성됨


- 파일 읽기 모드

readline 함수 사용

 

예시)

** readline() 함수는 파일의 가장 첫 번째 줄만 출력된다.


※ 여러줄을 출력하기 위해선!?


 

예시)

** while 반복문을 통해 무한루프 안에서 f.readline()을 사용하여 한 줄씩 읽는다.

** 더 이상 읽을 줄이 없을 때 break 수행

** 한 줄씩 읽어 출력할 때 끝 줄에 \n문자가 있으므로 빈 줄도 같이 출력


readlines 함수 사용

 

예시)

**  readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 가지는 리스트를 리턴

 

for문 사용을 통해 줄내림 예시)

** for 반복문은 반복횟수를 알 수 있을 때 사용

줄 내림(\n) 제거하는 방법은?

f = open("c:/pythonworks/새파일.txt",'r')
lines = f.readlines()
for line in lines:
   line = line.strip() #strip()은 줄 끝에 \n을 제거한다.
   print(line)
f.close()

** strip() 함수를 사용하면 줄 바꿈 문자 제거가 가능하다.

 

예시)


read 함수 사용

 

예시)

** f.read() 함수는 파일 내용 전체를 문자열로 리턴

 


파일객체를 for문과 함께 사용하기

 

예시)

** 파일객체(f) 는 for문과 함께 사용하여 파일을 줄 단위로 읽을 수 있다.


- 파일에 새로운 내용 추가하기

 

예시)

** 'a'로 열고 write를 사용하여 결과값 추가


- with문과 함께 사용하기: close()를 생략할 수 있다.

 

기존 사용 예시)

 

with문 사용 예시)

** with 블럭을 벗어나는 순간 열린 파일 객체 f가 자동으로 close된다.

'Language > Python' 카테고리의 다른 글

Python - 클래스  (0) 2024.05.07
Python - 프로그램의 입력과 출력  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07
Python - 함수  (0) 2024.05.02
Python 제어문 - for문  (1) 2024.04.28

● 사용자 입/출력

사용자 입력 : input() 함수 사용
괄호안에 안내 메시지 입력 가능

https://wikidocs.net/25 참고

 

예시)

** input 박스에 내용 입력시 입력한 내용 출력


예시2)

** 다만 type(number) 확인 시 숫자 int type이 아닌 str type으로 확인


-  사용자 출력 :print()함수 사용

 

예시)

** 지금까지 하용한 print 문의 용도는 데이터를 출력하는 것과 같다.


- 큰따옴표(")로 감싼 문자열은 +연산과 동일하다.

 

예시)

** 위 예시와 헤딩 내용은 print("Life"+"is"+"too short") 동일한 결과값을 출력

** 따옴표로 감싼 문자열을 연속해서 사용하면 + 연산한 것과 같다.


- 문자열 띄어쓰기는 (,)콤마를 사용한다.

 

예시)

** 쉼표( , ) 를 사용하면 문자열 띄어쓰기로 사용 가능


- 한 줄에 결과값 출력하기(end사용)

 

예시)

** end 매개변수의 기본 초기값은 줄내림(\n)

'Language > Python' 카테고리의 다른 글

Python - 프로그램의 입력과 출력  (0) 2024.05.07
Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 함수  (0) 2024.05.02
Python 제어문 - for문  (1) 2024.04.28
Python 제어문 - while문  (0) 2024.04.28

● 함수

- 파이썬의 함수 구조
def 함수명(매개변수) :
   수행문1
   수행문2
   ...

 

예시)


- 함수 형태

https://wikidocs.net/24 참조

함수는 들어온 입력값을 받은 후 어떤 처리를 하여 적절한 값을 리턴한다.
입력값과 리턴값의 존재 유무에 따라 4가지 형태의 함수가 존재한다.

 

1. 일반적인 함수 : 입력값, 리턴값 둘다 존재

리턴값이 있는 함수는 저장할 변수가 필요하다.
def 함수이름(매개변수):
   <수행문>
   ...
   return 리턴값

 

예시)


2. 입력값이 없는 함수

리턴값이 있는 함수는 저장할 변수가 필요하다.

 

예시)

** 리턴값을 받을 변수 = 함수명() == a = say()


3. 리턴값이 없는 함수

저장할 변수가 없다.

 

예시)

** return값은 오직 return명령어로만 돌려받을 수 있기 때문에 a에는 리턴값이 없다.


4. 입력값, 리턴값이 없는 함수

 

예시)

** 함수이름 say()를 통해서만 호출이 가능하다.


- 매개변수 지정하여 호출하기

 

예시)

** 매개변수를 지정하면 순서에 상관없이 사용할 수 있다.


- 입력값이 몇 개가 될지 알 수 없을 때

def 함수이름(*매개변수):
   <수행문>
   return문

* 매개변수가 아닌  *매개변수를 받는다.

 

예시)

 

** add_many함수는 입력값이 몇 개이든 상관없다.

** *args 처럼 매개변수 이름 앞에 * 를 붙이면 입력값을 전부 모아 튜플로 만들어준다.

** *args는 임의로 정한 변수명으로 *python, *sample 처럼 아무 이름을 붙여도 된다.


예시 2)

** *args 매개변수 앞에 choice 매개변수가 추가되어 있다.


- 키워드 매개변수 (kwargs)

키워드 매개변수를 사용하기 위해선  매개변수 앞에 별 2개(**)를 붙인다.

 

 

예시)

** **kwargs매개변수 이름 앞에 **을 붙이면 매개변수 kwags는 딕셔너리가 되고

    key=value 형태의 입력값이 딕셔너리에 저장된다.

 


- 함수의 리턴값은 언제나 하나이다.

 

예시)

** 리턴값이 하나이기 때문에 리턴값 a+b, a*b는 튜플값 하나인 (a+b, a*b)로 리턴

** 튜플값을 분리하고 싶은 경우 각각의 함수를 주어 호출하면 된다.


- return문이 하는 역할?

1. 값을 돌려주는 역할
2. 함수를 종료시키는 역할

 

예시)

** 함수의 리턴값은 언제나 하나이기 때문에 return a*b는 실행되지 않는다. 단, 오류는 발생하지 않는다.


예시 2)

** 특별한 상황에 함수를 빠져나가고 싶은 경우 return을 단독으로 사용하여 함수를 빠져나갈 수 있다.

** '천재' 값이 들어오면 문자열 출력 없이 함수 종료


- 매개변수 초기값 미리 설정하기

 

예시)

** 매개변수는 (name, age, man=True) 로 초기값 미리 설정한 것으로 미대입 시 man=True의 초기값을 가진다.

** (name, man=True, age)는 사용 불가하며, 디폴트를 적용하는 매개변수는 맨 뒤에 놓아야 한다.

ㄴ say_myself("홍길동",36) # 두번째 인자 값 36이 어디에 대입될지 파이썬 인터프리터가 알 수 없다.


- 함수 안에서 선언한 변수의 효력 범위

 

예시)

함수 안에서 사용하는 매개변수는 함수 밖의 변수 이름과는 전혀 상관없다.


- 함수 안에서 함수 밖의 변수를 변경하는 방법

global 명령어

 

예시)

 

** global a는 함수 안에서 함수 밖의 a 변수를 사용하는 뜻이나

함수는 독립적으로 존재하는 것이 좋기 때문에 외부 변수에 종속적인 함수는 좋은 함수가 아니니 참고!


- lambda (람다)

lambda로 선언된 내용은 결론적으로 함수와 동일한 역할을 한다.
함수를 간결하게 만들 때 사용한다.

 

- lambda 사용방법
함수명 = lambda 매개변수1, 매개변수2, ..: 매개변수를 이용한 표현식

 

기존 함수 예시)

 


lambda 예시)

** lambda로 만든 함수는 return 명령어가 없어도 결과값을 리턴한다.

** 기존 def 함수와 값이 동일하다.

'Language > Python' 카테고리의 다른 글

Python - 파일 읽고 쓰기  (0) 2024.05.07
Python - 사용자 입/출력  (0) 2024.05.07
Python 제어문 - for문  (1) 2024.04.28
Python 제어문 - while문  (0) 2024.04.28
Python 제어문 - if문  (0) 2024.04.28

● 제어문 - for문

for문은 직관적인 특징을 가장 잘 보여주는 반복문이다. (while문과 비슷)

for문은 문장 구조가 한 눈에 ㄷ르어온다는 장점이 있다.

 

※ for문의 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
   수행문1
   수행문2
   ...

 

예시)

** i는 리스트에 있는 요소를 담아주는 변수이다.

 


- 다양한 for 문의 사용 및 응용

 

예시)

** a 리스트의 요소값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.

 


총 5명의 학생이 시험을 보았다.
60점 이상이면 합격, 미만이면 불학격이다.
합격과 불합격 여부를 출력해보자.
marks = [90, 25, 80, 77, 58]
number = 0 # 학생의 번호를 붙여주기 위해 선언한 변수
for mark in marks:
   number = number + 1
   if mark >=60:
      print("%d번 학생 합격입니다. " %number)
   else:
      print("%d번 학생 불합격입니다. %number) 

 

예시)


- for문과 continue 이용

 

60점 이상인 학생에게만 메시지를 보내고 나머지 사람에게는 보내지 않는 프로그램
marks = [90, 25, 67, 45, 80]
number = 0
for i mark in marks:
   number = number + 1
   if mark <60:
      continue 
   print(" %d번 학생 합격입니다." %number)

 

예시)

** 60점 이하인 학생은 mark <60이 참이되어 continue문을 수행,

이로인해 축하 메시지 출력문은 수행하지 않고 다시 for문으로 돌아간다.


- for문과 함께 자주 사용하는 range함수

 

예시)

** range(1, 11)은 range(시작숫자, 끝숫자-1) 형태

** i변수에 1부터 10까지 하나씩 차례대로 대입된다.


예시2)

marks = [90, 25, 67, 45, 80]
for mark in range(len(marks)):
   if marks[mark] < 60:
      continue
   print(" %d번 학생 합격입니다." %(mark+1))

** len() 함수는 리스트 안에 요소 개수를 구하는 함수이다.

** range(len(marks))는 range(5)가 되어 mark에는 index 0~4까지 값이 대입된다.

 


- for와 range를 이용한 구구단 만들기

 

for i in range(2, 10): #단
   for j in range(1, 10): #곱하는 수
      print(i*j, end = " ")
   print(' ') #단을 구분하기 위해 띄어쓰기 사용

 

예시)

 

※ 참고 이미지

https://wikidocs.net/22 참고

** print(i*j, end=" ")와 같이 print 함수에서 end 파라미터를 설정한 이유는 결과값 출력 시 다음 줄로 넘기지 않고

해당 줄에 출력하기 위해 사용했다.

** print문의 end 매개변수에는 줄바꿈 문자(\n)가 기본적으로 설정되어 있다.


- 리스트 컴프리헨션(List comprehension)

리스트안에 for문을 포함하는 리스트 컴프리헨션을 사용하면
좀더 편리하고 직관적인 프로그램을 만들 수 있다.

 

※ 리스트 컴프리헨션 사용 문법

[표현식 for 항목 in 반복가능객체 if 조건문]

 

사용 전 문법)

a = [1,2,3,4]
result = []
for num in a:
    result.append(num*3)
print(result)

 

>> 출력 : [3, 6, 9, 12]

 

사용 후 문법)

a = [1,2,3,4]
result = [num*3 for num in a]
print(result)

 

>> 출력 : [3, 6, 9, 12]

 


 

※ for문 2개 이상 사용도 가능하며, for문 여러개 사용할 때 문법

[표현식 for 항목1 in 반복가능객체1 if 조건문1
   for 항목2 in 반복가능객체2 if 조건문2
   ...
   for 항목n in 반복가능객체n if 조건문n]

 

구구단을 통한 예시)

** for문으로 작성한 코드를 while문으로 바꿀 수 있고 while문 또한 for문으로 바꿀 수 있다.

'Language > Python' 카테고리의 다른 글

Python - 사용자 입/출력  (0) 2024.05.07
Python - 함수  (0) 2024.05.02
Python 제어문 - while문  (0) 2024.04.28
Python 제어문 - if문  (0) 2024.04.28
Python 변수  (1) 2024.04.26

● 제어문 - while문

문장을 반복해서 수행해야할 경우 사용, 사용 조건이 참인 경우에만 반복

while문은 '반복문'이라고도 한다.

 

- while문의 기본 구조

while 조건문:
   수행문1
   수행문2
   수행문3
   ...

 

예시)

 


예시2)

** number = 0과 같이 변수를 먼저선언하는 이유는 number != 4에서 변수가 존재하지 않는다는 오류가 발생하기 때문!

** 1~3 입력 시 prompt를 반복해서 출력, 4를 입력하면 조건문은 거짓이 되어 빠져나가진다.

 

 


- while문 강제로 빠져나가기(break)

 

예시)

** while 반복문이 수행 후 break문을 호출하여 while문을 빠져나간다.

 

※ 참고 이미지


예시 2)

coffee=10
while True:
   money = int(input("동전을 넣어주세요"))
   if money == 300:
      print("동전이 들어왔습니다. 커피를 내립니다.")
      coffee == coffee -1
   elif money > 300:
      print("거스름돈 %d를 주고, 커피를 내립니다." %(money-300))
      coffee = coffee-1
   else:
      print("돈을 다시 돌려주고 커피를 판매하지 않습니다.")
      print("남은 커피의 잔수는 %d잔 입니다." %coffee)
   if coffee == 0:
      print("커피가 모두 소진되었습니다. 판매 중지")
      break

 

도스 명령어
1. cd(change directory) : 디렉토리 변경
2. dir(directory) : 해당 디렉토리 안에 있는 파일 목록을 보여준다.

 

※ cmd를 통한 예시2 구문 돌리는 방법
1. 메모장에 예시2 입력 후 다른 이름으로 저장 >> 파일명 coffee.py
2. cmd 실행
3. c:\pythonwors 입력
4. python coffee.py 실행


- while문 맨 처음으로 돌아가기(continue)

 

예시)

예시는 1~ 10까지 숫자 중 홀수만 출력하는 예이다.
a가 10보다 작을 동안 a는 1씩 계속 증가한다.
a % 2 == 0 (a를 2로 나누었을 때 나머지가 0인 경우)가 참이되는 경우는 a가 짝수일 때다.
* a가 짝수면 continue를 수행한다.
* contine가 없을 경우 짝수만 출력된다.

- 무한루프

※ 무한루프의 기본 구조
while True : 
   수행문1
   수행문2
   ...
** 조건이 항상 참이니까 무한 반복이 된다.
** 파이썬은 do while문이 없다.

 

'Language > Python' 카테고리의 다른 글

Python - 함수  (0) 2024.05.02
Python 제어문 - for문  (1) 2024.04.28
Python 제어문 - if문  (0) 2024.04.28
Python 변수  (1) 2024.04.26
Python 불 자료형  (0) 2024.04.26

● 제어문 - if문

- if문의 기본 구조

if 조건문:
  수행할 문장1
  수행할 문장2
  ...
else:
   수행할 문장A
   수행할 문장B
   ...

 

예시 1)


※ 프로그램 과정 순서도

* https://wikidocs.net/20#if 링크 참조

 


예시 2)

** if 조건문 뒤에는 반드시 (:)이 붙으며, 의미가 있기 보단 문법 구조

** while, for, def, class 에도 (:) 콜론이 들어가니 주의 필요


- 조건문 구분하는 방법

들여쓰기(indentation)로 구분하며, 들여쓰기 위치가 다를 경우 오류 발생

 

예시)


예시 2)

** 들여쓰기가 다른데 정상 출력되는 이유는 ?

** 들여쓰기는 명령 블럭에서만 해당 되므로 명령 블럭이 다른 경우 들여쓰기 위치가 다르면 오류가 발생하지 않는다.

 


● 비교 연산자

조건문에서의 비교연산자는 참과 거짓을 판별한다.

 

※ 비교 연산자 설명

비교연산자 설명
x < y x가 y보다 작다.
x > y x 가 y보다 크다.
x == y x와 y가 같다.
x != y x와 y는 같지 않다.
x >= y x가 y보다 크거나 같다.
x <= y x가 y보다 작거나 같다.

 

예시)


● and, or not 연산자

※ 관련 연산자 설명

연산자 설명
x or y x와 y 둘 중 하나만 참이어도 참이다.
x and y x와 y 모두 참이어야 참이다.
not x x가 거짓이면 참이다.

 

예시)

** 돈은 3,000원으로 거짓에 해당하나 카드가 있기 때문에 참으로 '택시 타자' 출력


● in, not in 연산자

※ 관련 연산자 설명

in not in
x in 리스트 x not in 리스트
x in 튜플 x not in 튜플
x in 문자열 x not in 문자열

 

예시)

** 리스트 안에 money가 있으므로 'money' in poket은 참

 


- 조건문에서 아무일도 하지 않게 설정하는 방법

 

예시)

** poket 리스트 안에 money가 있기 때문에 if문 다음 문장인 pass가 실행되어 결과값을 출력하지 않는다.


- 다양한 조건 처리(elif)

※ 기본 구조

if 조건문:
   수행할_문장1
   수행할_문장2
elif 조건문:
   수행할_문장1
   수행할_문장2
elif 조건문:
   수행할_문장1
   수행할_문장2
else:
   수행할_문장1
   수행할_문장2

 

예시)

** poket 리스트 안에 money가 없으나 elif card를 통해 '택시 타고 가' 출력

** elif는 개수 제한 없이 사용 가능하다.

 

※ elif 참고 이미지

https://wikidocs.net/20#if 참고


- 짧은 코드의 경우 if, elif, else는 한 줄 입력이 가능하다.

 

예시)

** if문 poket 다음에 수행할 문장을 (:) 콜론 뒤에 바로 적었다. elif, else도 동일하다.


● 조건부 표현식

※ 조건부 표현식 정의

변수 = "조건문이 참인 경우의 값" if 조건문 else "조건문이 거짓인 경우의 값"

 

조건부 표현식 예시)

 

조건부 표현식 간단히 표현하는 방법 예시)

** 조건부 표현식은 가독성에 유리하고 한 줄로 작성할 수 있어 활용성이 좋다.

'Language > Python' 카테고리의 다른 글

Python 제어문 - for문  (1) 2024.04.28
Python 제어문 - while문  (0) 2024.04.28
Python 변수  (1) 2024.04.26
Python 불 자료형  (0) 2024.04.26
Python 집합 자료형  (0) 2024.04.26

+ Recent posts