본문 바로가기

Programming/Python [피선]

파이썬 코드 작성을 위한 기본의 기본 배경지식_구조적 프로그래밍 패러다임

//방송통신대학교 컴퓨터과학과 2023년도 1학기 정재화 교수님의  파이썬프로그래밍기초 수업을 기반으로 작성한 글입니다.


🌈 Basic Rules

  • 동적 타이핑 특징으로 변수의 자료형을 미리 선언할 필요가 없다!
  • 숫자는 소수점이 없는 정수 int와 소수점이 있는 실수 float로 구분
  • 문자 또는 문자열은 인용부호 " 또는 '를 사용하여 표현 (둘다 무관)
  • 들여쓰기 의존적 언어로, PEP 8에 의해 스페이스 4칸 권장
  • 한 라인 주석에 # 사용, 여러 라인 주석에 """ 또는 '''을 사용 (둘다 무관)
  • 식별자는 문자 또는 밑줄로만 시작 가능
  • 식별자에 길이 제한이 없다!
  • 별도의 모듈이나 패키지를 불러오지 않고 사용가능한 파이썬 내장 함수가 있다! (파이썬 인터프리터에서 지원) e.g. max(), round(), pow(), etc.
  • 단락평가 (Short-circuit evaluation) : 첫 번째 논리값만으로 전체 연산 결과가 판별 가능할 때 두 번째 논리값을 확인/평가하지 않는 기법
  • 변수의 개수에 상응하는 값을 콤마(,)로 나열하는 동시 할당 지원
  • 복수 개의 변수에 할당값 맞바꾸는교환(swap) 지원
#동시할당
temp, season = 27. "summer"

#교환(swap)
temp = hei
hei = rad
rad = temp
rad, hei = hei, rad

 

🌈 프로그래밍 에러

(1) 구문 오류 (syntax error) : 문법 체계에 적합하지 않은 명령문 입력 시 발생

(2) 실행 오류 (runtime error) : 논리적으로 실행 불가능한 명령문 작성 시 발생

(3) 의미 오류 (semantic error) : 의미적으로 잘못 해석되는 명령문 작성 시 발생

* 띄어쓰지 제대로 안하면? 구문 오류 발생!

 

🌈 구조적 프로그래밍 패러다임

: 절차적 프로그래밍 패러다임의 하위 개념

  • 프로그램을 실행 흐름이 간결하고 작은 규모로 조직화하기 쉬움
  • 프로그램을 하기 세 가지 제어구조만으로 구성하는 패러다임

(1) 순차구조 - input, print

(2) 선택구조 - if

(3) 반복구조 - for, while

 

🌈 format 함수

 

print(format("구구단표",">20s"))

# 표 머리 출력
print("  |", end = "")
for j in range(1, 10):
    print("  ", j, end = "")
# 새로운 행 삽입
print() 
print("-----------------------------------------")

# 구구단 표 출력 
for i in range(1,10) : 
    print(i, "|", end = "")
    for j in range(1, 10) : 
        #format(i*j, ">2d")
        print(" ", format(i*j, ">2d"), end = "") # = print(format(i*j, ">4d"), end = "")
    print()

 

출력

 

🌈 기본 함수 SUITS

1) input 함수 및 형변환

#input 함수
rad = input("반지름을 입력하세요 : ")
#형변환
rad = int(input("반지름을 입력하세요 : "))

 

 

2) print 함수

#print 함수
print("부피는 ", vol, "입니다.", sep="", end="") #sep의 기본값은 공백, end의 기본값은 \n이지만 ""통해 다른 값으로 변경 가능

 

3) if 함수 중첩구조

#if 함수 중첩구조
if (rad > 0 and hei > 0) :
	printf(rad)
elif (rad > 0 and hei < 0) :
	printf(rad * 0)
else : 
	printf(rad * 10)

 

4) while 함수 & for 함수 (제어반복문)

#조건제어반복 while문
while count <= 5 : 
	print(msg)
    count = count + 1
    
#계수제어반복 for문
hei_list = [1, 4, 14, 26, 31]
for hei in hei_list : 
	print(hei)
for i in range(4) : #시작이 0, 끝이 3이고 1씩 증가시키는 시퀀스
	print("#", end = "")

5) 리스트 생성 자동화

#리스트 생성 자동화
a = range(1, 100) #1~99까지 99개의 정수 리스트 생성
b = range(1, 100, 1) #1~99까지 99개의 정수 리스트 생성
c = range(1, 100, 10) #1~99까지 10의 간격을 갖는 정수 리스트 생성

 

 

🌈 사용자 정의 함수

#좋지 않은 코드
def prt_cone_vol() : 
	r = 10
    h = 10
    if r > 0 and h > 0 :
    	vol = 3.14 * r ** 2 * h
        print("부피는", vol)
        
#좋은 코드
def prt_cone_vol(r, h) :
	if r > 0 and h > 0 :
    	vol = 3.14 * r ** 2 * h
        return vol
        
rad = 30
hei = 50
vol = prt_cone_vol(rad, hei)
print("부피는", vol)

 

 

 

>> 기본 매개변수

  • 함수 호출 시 매개변수가 전달되지 않을 경우 기본값이 전달되는 매개변수
  • 일반 매개변수 앞에 위치 불가

함수 구문형식에서의 기본 매개변수

>> 가변 매개변수

  • 함수 호출 시 매개변수를 사용자가 원하는 개수만큼 지정할 수 있는 매개변수

힘수 구문형식에서의 가변 매개변수

 

def var_sum_avg(*num) : #매개변수를 리스트 형식으로 전달하기 때문에 for문 사용 필요
	...
	for i in num : 
	...
    
var_sum_avg(10, 20, 30, 40)

 

 

🌈 모듈 (Module)

함수, 상수 또는 클래스를 모아 놓은 집합체

  • 파이썬 모듈을 프로그램 내부에서 사용할 수 있게 네임스페이스에 추가하는 명령어

모듈 등록 구문 형식

 

모듈 등록 구문 형식

  • 모듈이름 없이 모듈의 변수, 함수, 클래스를 사용하는 명령어

모듈 등록 구문 형식

 

  • 네임스페이스 내 모듈의 멤버 식별자 제거

모듈 제거 구문 형식

 

>> 모듈 등록 확인

(1) dir() : 네임스페이스에 등록되어 있는 모든 이름들을 리스트로 반환

(2) help() : 대화형 도움말 시스템 호출 또는 클래스/매소드의 사용방법 반환

 

 

* 네임스페이스 : 특정 객체를 이름에 따라 구분할 수 있는 범위

>> 모듈, 패키지, 라이브러리

모듈, 패키지, 라이브러

  • 모듈 : 클래스, 함수, 상수의 집합 (하나의 파이썬 파일로 존재)
  • 패키지 : 하위 패키지 및 모듈의 집합 (폴더단위)
  • 라이브러리 : 패키지 및 모듈의 집합

 

🌈 유용한 모듈 (Module) SUITS

(1) math 모듈

math 모듈 멤버

(2) random 모듈

 

random 모듈 멤버

 

(3) time 모듈

time 모듈의 기준점이 되는 에포크 시간

 

time 모듈 멤버


이만 여기까지. 바바!

23.06.16