본문 바로가기

전공

파이썬_변수, 자료형 / 제어문, 반복문 / 함수

파이썬 언어의 개요

파이썬

 - 1991년 귀도 반 로섬이 발표한 오픈 소스 인터프리터 언어이다.

 - www.python.org를 를 통해 무료로 배포한다.

 - 명령 프롬프트나 셸에서 실행한다.

 

파이썬 언어의 특징

장점

오픈 소스 비용이 들지 않고, 전 세계의 개발자가 참여하여 점점 발전하는 언어이다.
쉽고 간결한 문법 어렵고 규칙이 많은 기존 프로그래밍 언어들과 달리 문법이 쉽고 간결하여 빠르게 배울 수 있다. 기존 언어의 개념을 안다면 매우 빠르게 익힐 수 있다.
뛰어난 가독성 코드 블록( {} 중괄호 문법 )을 쓰지 않고 들여쓰기로 구분하여 블록을 구분하기 쉽다. 
코드가 간결하여 이해하기 쉽고, 공동 작업이나 유지 보수가 쉽다. 
동적 타이핑 실행 중에 자료형이 체크되고 메모리가 자동으로 관리된다.
유니코드 사용 유니코드를 사용하므로 한글, 한자, 중국어, 일본어 등 문자 표현이 자유롭다.
풍부한 라이브러리 기본적으로 제공되는 라이브러리가 풍부하고, 이미 만들어져 있는 수많은 라이브러리를 쉽게 추가하여 구현할 수 있다.
빠른 개발 속도 "Lite is too short, You need Python."이라는 말이 있을 정도로 간결한 문법과 수많은 라이브러리를 이용하여 빠르게 개발할 수 있다.
C 언어와의 쉬운 연계 C 언어로 구현되어 있는 부분과 잘 연결되므로 풍부하고 다양한 개발이 가능하다.
대부분의 운영 체제에서 실행 가능 Windows, mac OS, Linux / UNIX 등 주로 쓰이는 대부분의 운영 체제에서 같은 방법으로 실행할 수 있다.
다양한 분야에 활용 많은 사람들이 사용하고 있고 쉬워서 다양한 분야에 활용할 수 있다.

 

단점

연산 속도가 느림 C 언어보다 약 2~140배 느리다. 빠른 연산이 필요한 부분은 C로 개발해 연결하는 것이 낫다. 높은 사양을 요구하는 게임을 개발하는 데는 적합하지 않으며, 컴퓨터 속도가 느리다면 다른 언어를 사용해야 한다.
모바일 기기에서 활용이 어려움 파이썬으로 개발된 스마트폰 애플리케이션이 거의 없을 정도로 모바일 분야에서는 활용되지 않고 있다.

 

파이썬 언어의 활용

시스템 유틸리티 제작 파이썬은 운영 체제의 시스템 명령어들을 이용할 수 있다.
이를 바탕으로 여러 가지 시스템 유틸리티를 만드는 데 편리하다. 
웹과 인터넷 서비스 개발 동적으로 동작하는 웹을 서비스할 수 있다. 대표적으로 Flask, Django 프레임워크가 있다.
이를 활용하면 파이썬으로 쉽고 빠르게 웹 서버를 만들 수 있다.
네트워크 프로그래밍 Twisted 파이썬을 이용해 비동기식 네트워크 프로그래밍을 쉽게 할 수 있다.
데이터베이스 프로그래밍 Oracle, MySQL, PostgreSQL, Sybase, Infomix 등 데이터베이스에 접근할 수 있게 해 주는 도구를 제공한다.
데이터 분석 Pandas라는 모듈을 사용하여 데이터 분석을 쉽고 효과적으로 할 수 있다.
GUI 프로그래밍 Tkinter, wxPython, PyQT, PyGT 등을 이용하여 윈도우 창을 활용한 프로그램을 매우 간단히 개발할 수 있다.
수학, 과학 분야 NumPy를 이용하여 편리하게 수치해석, 통계 관련 기능을 구현할 수 있고, 대부분 C언어로 작성되어 실행 속도도 빠르다. 또 이 NumPy를 활용한 SciPy를 이용하여 과학 분야에 많이 쓰이는 배열, 행렬, 적분, 미분, 방정식 연산, 통계 등을 쉽게 할 수 있다.
교육 분야 문법이 간단하여 소프트웨어 개발을 처음 하는 사람들에게 가르치기 쉽고 배우기 쉽다.
사물 인터넷(IoT) 분야 사물 인터넷을 자체적으로 개발하기 위한 주요 기기인 라즈베리 파이를 제어한 도구로 사용한다.

 

여러 가지 에디터

  • IDLE
     - 파이썬을 설치하면 기본적으로 같이 설치되는 에디터로, 파이썬 언어만 지원한다.
     - 기본적으로 대화형 파이썬 Shell 모드가 실행 되며, 대화형 코드 편집기 모드 이다. 
  • Atom
     - GitHub에서 만든 에디터로, Nodejs와 Electron을 기반으로 만들어진, 오픈 소스이다.
     - 여러 가지 운영 체제를 지원하며 다양한 Package를 설치하여 기능을 자유롭게 확장하고 실시간 협업이 가능하다.
  • Visual Studio Code
     - Microsoft에서 개발한 에디터로 오픈소스이고, 다양한 운영체제와 프로그래밍 언어를 지원한다.
     - 자동완성과 디버깅이 쉬우며, 확장기능을 설치할 수 있다.
  • PyCharm
     - Andriod Studio의 기반이 된 IntelliJ IDEA를 만든 Jetbranins에서 파이썬을 위해 개발한 IDE(통합 개발 환경)이다.
     - 자동 완성, 문법 체크 등 편리한 기능을 많이 제공하며, 다양한 파이썬 프레임워크를 지원해 고도의 파이썬 프로그램을 작성하기 쉽다.


간단한 파이썬 프로그램

키워드 보기 - 키워드( 파이썬 에서 사용하는 예약어 )는 상수 또는 변수나 다른 식별자의 이름으로 사용할 수 없고, 프로그래밍 언어의 문법상 특별하게 사용하는 단어이다.

import keyword
print(keyword.kwlist)

# 출력 결과
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class','continue', 
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 
'with', 'yield']

 

달력 보기

import calendar
print(calendar.month(2024, 3))

# 출력 결과
     March 2024
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

 

현재 날짜와 시각 보기
 - 날짜와 시간에 관련된 모듈을 이용해 현재나 특정 시간의 연월일, 시, 분, 초를 쉽게 표시할 수 있다.

import datetime as dt
now = dt.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)

# 출력 결과
2024 7 9 19 35 8

 

거북이 그래픽 모듈 활용하기

# 거북이 그래픽 모듈 준비
import turtle as t
t.shape("turtle")

# 사각형 그리기
t.forward(50)
t.right(90)
t.forward(50)
t.right(90)
t.forward(50)
t.right(90)
t.forward(50)
t.right(90)

# 별 그리기
t.clear()
t.forward(150)
t.left(144)
t.forward(150)
t.left(144)
t.forward(150)
t.left(144)
t.forward(150)
t.left(144)
t.forward(150)
t.left(144)

t.exitonclick()

숫자형

변수

 - 데이터를 담는 장소

 - 자료형을 미리 선언하지 않고 바로 변수에 값을 대입해서 사용 ( 동적 타이핑 : 실행 중에 동적으로 자료형을 결정함. )

 

파이썬 변수 이름 규칙

 - 예약어는 사용할 수 없다.

 - 첫 번째 문자에는 숫자가 올 수 없다.

 - 공백을 사용할 수 없으므로 snake_case또는 camelCase형태로 사용한다.

 ( 변수와 함수 : snake_case스타일로, 클래스 : camelCase스타일로 )

 - 밑줄 문자( _ )는 사용할 수 있다.

 - 대소문자를 구별한다. ( a와 A는 다른 변수 )

 

수식 연산자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기
// 나눗셈의 몫 구하기
% 나눗셈의 나머지 구하기
** 거듭제곱

 

대입 연산자 설명
= 값을 대입한다.
+= 변수에 특정 값을 더하고 그 결과를 다시 변수에 대입한다.
-= 변수에 특정 값을 빼고 그 결과를 다시 변수에 대입한다.
*= 변수에 특정 값을 곱하고 그 결과를 다시 변수에 대입한다.
/= 변수에 특정 값을 나누고 그 결과를 다시 변수에 대입한다.
//= 변수에 특정 값을 나눈 몫을 구하고 그 결과를 다시 변수에 대입한다.
%= 변수에 특정 값을 나눈 나머지를 구하고 그 결과를 다시 변수에 대입한다.
**= 변수에 특정 값을 거듭제곱하고 그 결과를 다시 변수에 대입한다.

 

type(변수명)

 - 변수의 자료형을 알려주는 함수
 - <class 'int'> : 정수형
 - <class 'float'> : 실수형

 

여러가지 진수

 - 2진수 (0b) : 0b`숫자`     // 0b1100111000

 - 8진수 (0o) : 0o`숫자`     // 0 o130

 - 16진수 (0x) : 0x`숫자`   // 0 xD7 A

 // type : <class 'int'>

 

지수 표현

10e3	# 10.0 * 10³
# 10000.0

1.23456E2	# 1.23456 * 10²
# 123.456

1.23456e-2	# 1.23456 * 10-²
#0.0123456

 - 지수 표현 e 뒤의 `숫자` = *10의 `숫자`제곱

 - 지수 표현으로 쓴 숫자는 모두 실수형( float )

 - 파이썬은 부동소수점 표현 방법의 표준인 IEEE754를 따르기 때문에 정밀도에 한계가 있다.

 - 정밀도가 필요하다면 표준 라이브러리인 decimal을 사용한다.

 

복소수

 - 파이썬은 복소수로 i 대신에 j 또는 J를 사용한다.

8+24j	# 실수 = 8, 허수 = 24 인 복소수
# (8 + 24j)

 

변환 함수

예제 의미 결과
int( 12.7 ) 실수를 정수로 변환 ( 버림 )  12
int( '321' ) 문자열을 정수로 변환 321
float( 456 ) 정수를 실수로 변환 456.0
float( '64.4' ) 문자열을 실수로 변환 64.4
float( '123e4' ) 지수 표현을 실수로 표현 1230000.0
complex( 1.23 ) 실수를 복소수로 표현 (1.23 + 0j)
complex( '1.23 + 45.6j' ) 문자열을 복소수로 표현 (1.23 + 45.6j)
str( 1.23 ) 실수를 문자열로 변환 '1.23'

 

문자열

문자열 인덱싱, 슬라이싱, 함수

 - 작은따옴표(') 또는 큰따옴표(")를 사용하고, 둘의 차이는 없지만 인관성 있게 사용하기.

 - 연산자 + 는 문자열을 연결한다.(숫자형은 덧셈 계산)

 - 연산자 *는 문자열을 여러 번 사용한다.(숫자형은 곱셈 계산)

 - 여러 줄로 이루어진 문자열은 작은따옴표 3개( ''' ) 또는 큰따옴표( """ )로 묶어서 나타낸다.

 // 이스케이프 코드

이스케이프 코드 설명
\n 새 줄을 시작한다.
\t 문자열 사이에 탭 간격을 준다.
\\ 역슬래시(\) 문자를 그대로 표현한다.
\' 작은따옴표(') 문자를 그대로 표현한다.
\" 큰따옴표(") 문자를 그대로 표현한다.

 

인덱싱 - 문자로 이루어진 문자열에서 원하는 자리의 문자를 가져온다.

 - 인덱스에 원하는 자릿수를 넣어 그 자리의 문자를 가져올 수 있다.

 - 인덱스 맨 앞 글자를 가리키는 0부터 시작한다.

 - 인덱스를 음수로 사용할 수 있는데, 맨 마지막 글자는 '-1'이고 그 앞 글자는 '-2'이다.

( 차례대로 움직여 맨 앞 글자는 '-글자수'로 가리킬 수 있다. )

 

#문자열 다루기
print("Hello" + ", " + "world!")
# Hello, world!

print("Hello?" * 5)
# Hello?Hello?Hello?Hello?Hello?

print("\"Hello!!\"\n" + "world~")
# "Hello!!"
# world~

multiline = '''Happy
Programming'''
print(multiline)
# Happy
# Programming

# 문자열 인덱스
s = "Life is too short, You need Python."
s[3]	# 'e'
s[11]	# ' '
s[-1]	# '.'
s[-20]	# 'r'

#문자열 슬라이싱
s[3:7]	# 'e is'	인덱스 3번부터 인덱스 7번 바로 앞까지
s[30:]	# 'thon.'	인덱스 30번부터 끝까지
s[:-17]	# 'Life is too short,'	처음부터 -17번 인덱스 전까지
s[:]	# 문자열 전체

# 문자열 함수
h = " Happy Programming! "
len(h)	# 20	글자 수 세기
h.count("p")	# 2	문자열에서 p의 개수 세기(대소문자 구별)
h.upper()	# ' HAPPY PROGRAMMING! '	대문자로 변경
h.lower()	# ' happy programming! '	소문자로 변경
h.strip()	# 'Happy Programming!'	좌우 공백 삭제
h.replace("Happy", "Funny")	# ' Funny Programmring! ' 문자열 대체하기
h.find("ap")	# 3	문자열 왼쪽부터 찾기	/ 못찾으면 -1 리턴
h.rfind("a")	# 13	문자열 오른쪽부터 찾기

"a" in h	# True	문자열에 있는지 확인
x = "1 2 3 4 5 6 7"
y = x.split(" ")	# x 문자열 리스트로 나누기
z = ", ".join(y)	# y 리스트 ", "를 넣어서 문자열로 만들기

# format - 문자열 형식을 미리 정하고, 인자를 주어 문자열을 완성한다.
s = "name : {}, number : {}, TF : {}"
s.format("name", 123, True)
print("n:{a}, m:{b}, t:{a}".format(a = "name", b = 3))

# 정수 표현
"{:5d}".format(515)	# 최소 5칸을 차지하는 정수
"{:+5d}".format(515)	# 양수면 + 표시
"{:=+5d}".format(515)	# +를 맨 앞에 표시
"{:05d}".format(515)	# 빈칸을 0으로 채우기

# 실수 표현
"{:12f}".format(11.17)	# 최소 12칸을 차지하는 실수
"{:6.1f}".format(11.17)	# 소수점 1자리까지 반올림해서 나타내기

리스트

리스트 - 순서가 있게 요소를 목록으로 담고 있다.

[값1, 값2, 값3]

# 리스트
L = []
player = ["str", 10, True]
li = list(range(3))

# list() - 리스트 만드는 함수
list(문자열) - 문자열의 문자가 하나씩 리스트의 요소로 들어간다.
list(튜플) - 튜플의 각 요소가 하나씩 리스트의 요소로 들어간다.
list(딕셔너리) - 딕셔너리의 키가 하나씩 리스트의 요소로 들어간다.
list(셋) - 셋의 각 요소가 하나씩 리스트의 요소로 들어간다.
list(range()) - range()함수의 각 요소가 하나씩 리스트의 요소로 들어간다.

# 요소 추가
li + [3, 4]
li += [3, 4, 5]

리스트.append(인자) - 인자가 리스트면 그 리스트를 한 요소로 추가한다.
리스트.insert(인덱스, 값) - 인덱스 위치에 값을 요소로 추가한다.
리스트.extend(인자) - 인자가 리스트면 리스트를 해제하여 하나씩 요소로 추가한다.

# 요소 수정
li[3] = 60

# 요소 제거
del 리스트[인덱스] - 해당 인덱스 요소를 제거한다.
리스트.pop(인덱스) - 해당 인덱스 요소를 제거한다.
리스트.remove(값) - 해당 값을 리스트에서 제거한다.
리스트.clear() - 모든 요소를 제거한다.

# 요소 검색
값 in 리스트 - 리스트에 값이 있는지 확인한다.

# 기타 함수
len(리스트) - 리스트의 각 요소의 개수를 센다.
리스트.sort() - 리스트를 정렬한다.
리스트.reverse() - 리스트의 현재 상태에서 거꾸로 정렬한다.

 

튜플

튜플 - 여러 개의 요소를 하나의 그룹으로 다루며, 값 변경이 불가능하다.

(값1, 값2, 값3)

# 튜플
t=()

# 패킹, 언패킹
color = 129, 247, 216	# 패킹(129, 247, 216)
red, green, blue = color	# 언패킹
# red = 127, green = 247, blue = 216

x, y = 123, 456	# x = 123, y = 456
x, y = y, x	# 직관적인 교환(swap) 가능

a = (123, 'abc', True, 123)
a[1]	# 123	인덱싱
a[2:]	# (True, 123)	슬라이싱

튜플.index(값) - 값에 해당하는 인덱스를 가져온다.
튜플.count(값) - 값에 해당하는 요소의 개수를 가져온다.

 

딕셔너리

딕셔너리 - 특정 키에 값을 담는다.

{키1:값1, 키2:값2, 키3:값3}

# 딕셔너리
d = {}
urls = {"google":"google.com", 123:["num", 0]}
# 키 : 문자열, 숫자, 변경이 불가한 형식의 자료형(튜플 등)이 가능

# 요소 추가 / 수정
urls["x"] = 2560	# 딕셔너리에 x 없으면 자동 추가, 있으면 수정

# 요소 제거
del 딕셔너리[키]	# 딕셔너리의 해당 키와 값 제거
딕셔너리.pop(키)	# 딕셔너리의 해당 키와 값 제거
딕셔너리.clear()	# {}	딕셔너리의 모든 요소 제거

# 요소 검색
urls["google"]	# "google.com"	키의 값 가져옴
urls.get("google")	# "google.com"	키의 값을 가져옴

# 키와 값 검색 방법 다름
키 in 딕셔너리 - 딕셔너리에 키가 있는지 확인
값 in 딕셔너리.values() - 딕셔너리에 값이 있는지 확인
"google" in urls	# True
"google.com" in urls	# False
"google.com" in urls.value()	# True

# 기타 함수
len(딕셔너리) - 요소(키)의 수를 센다.
딕셔너리.keys() - 딕셔너리의 키들을 dict_keys 객체로 리턴
딕셔너리.values() - 딕셔너리의 값들을 dict_values 객체로 리턴
딕셔너리.items() - 딕셔너리의 키와 값의 쌍을 묶어 dict_items 객체로 리턴

 

 - 순서가 없고, 중복되지 않으며, 집합 연산을 할 수 있다.

{값1, 값2, 값3}

# 셋
game = {"LOL", "Overwatch", "Tetris", 1942, 2048}
set("Funny")	# {'F', 'u', 'n', 'y'}

# 셋 생성
set(문자열) - 문자열의 문자가 하나씩 셋의 요소로 들어간다.
set(리스트) - 리스트의 각 요소가 하나씩 셋의 요소로 들어간다.
set(튜플) - 튜플의 각 요소가 하나씩 셋의 요소로 들어간다.
set(딕셔너리) - 딕셔너리의 키가 하나씩 셋의 요소로 들어간다.
set(range()) - range()한수의 각 요소가 하나씩 리스트의 요소로 들어간다.

# 셋 추가
game.update(("NBA", "MLB"))

셋.add() - 요소 하나를 추가할 때 사용한다.
셋.update() - 여러 요소를 추가할 때 사용한다.

# 셋 제거
game.remove("LOL")

# 셋 연산 - 교집합, 합집합, 차집합, 대칭 차집합
# 교집합
s1 & s2
s1.intersection(s2)
# 합집합
s1 | s2
s1.union(s2)
# 차집합
s1 - s2
s1.difference(s2)
# 대칭 차집합
s1  ^ s2
s1.symmetric-difference(s2)

 

리스트, 튜플, 딕셔너리, 셋 비교

  리스트 튜플 딕셔너리
공통점 여러 개의 자료를 하나의 덩어리로 묶어서 다룰 수 있는 자료 구조
형식 [값1, 값2] (값1, 값2) {키1:값1, 키2:값2} {값1, 값2}
빈 자료형 생성 [ ] ( ) { } set()
생성 함수 list() tuple() dict() set()
요소를 수정할 수 있음 O X O O
요소의 순서가 있음 O O 순서는 있지만
키로 값을 찾음
X

 

// 문자열, 리스트, 튜플, 딕셔너리, 셋과 함께 쓸 수 있는 함수

# reversed() 함수 : 요소의 인덱스가 0부터 차례대로 매겨지는 자료형의 순서를 거꾸로 한다.
list(reversed([1, 2, 3, 4, 5]))
# [5, 4, 3, 2, 1]

# enumerate() 함수 : 인덱스와 값을 리턴
for i, value in emunerate(("funny", "Python")):
	print(i, value)
# 0 funny
# 1 Python

논리형

bool - 참과 거짓, 두 가지 결과만 있는 자료형

자료형 참 or 거짓
숫자형 0이 아닌 숫자 True
0 False
문자열 "Python" True
" " False
리스트 [1, 2, 3] True
[ ] False
튜플 ( ) False
딕셔너리 { } False
set() False
  None False

 

비교 / 논리 / 비트 연산자

비교 연산자

연산자 설명
a == b 같은지 판단
a != b 다른지 판단
a > b a가 b보다 큰지 판단
a >= b a가 b보다 크거나 같은지 판단
a < b a가 b보다 작은지 판단
a <= b a가 b보다 작거나 같은지 판단

 

논리 연산자 - not / and / or

not True	# False
not False	# True

True and True	# True
True and False	# False
False and True	# False
False and False	# False

True or True	# True
True or False	# True
False or True	# True
False or False	# False

 

비트 연산자 - bin() 함수를 이용해 이진수로 표현

연산자 설명
a & b 비트 단위로 AND 연산 ( 둘 다 1일 때 , 나머지는 0 )
a | b 비트 단위로 OR 연산 ( 둘 다 1일 때 0, 나머지는 1 )
a ^ b 비트 단위로 XOR 연산 ( a와 b가 다르면 1, 같으면 0 )
  ~ a 비트 단위로 보수 연산 ( a의 1의 보수 )
a << b 왼쪽 시프트 연산.  a를 왼쪽으로 b비트만큼 옮김
a >> b 오른쪽 시프트 연산.  a를 오른쪽으로 b비트만큼 옮김
bin(0b1010 & 0b0110)
# '0b10'	# 둘 다 1이면 1, 나머진 0

bin(0b1010 | 0b0110)
# '0b1110'	# 둘 다 0이면 0, 나머진 1

bin(0b1010 ^ 0b0110)
# '0b1100'	다르면 1, 같으면 0

bin(~0b1010)
# '-0b1011'

bin(0b1010 << 2)
# '0b101000'

bin(0b1010 >> 2)
# '0b10'

프로그램 구성 요소

구성 요소 설명
예약어 파이썬 언어에서 문법적인 용도로 사용하는 특별한 단어.
변수 등 식별자로 사용할 수 없다.
주석 프로그램의 실행과 상관없는 설명을 적을 때 사용한다.
ex. >>> x = "미지의 수"          # x는 알 수 없는 수
변수 자료를 담기 위한 장소이다.
'='라는 기호를 사용하여 값을 대입한다.
상수 파이썬 언어는 상수와 관련한 예약어가 따로 없다.
(C는 const, Java는 final)
함수 프로그램 명령어를 여러 개 모아 놓은 묶음이다.
입력 값 없이 기능을 수행하게 할 수도 있고, 입력 값을 갖고 수행하여 그 결과를 반환할 수도 있다. 
클래스 데이터와 그 데이터와 관련한 함수들을 한데 모아놓은 묶음이다.
모듈 여러 코드를 한데 묶어 재사용하기 위한 묶음이다.
보통 하나의 파일을 의미하며 import를 통해 다른 모듈에서 사용할 수 있다.
모듈을 사용하면 특정한 기능을 한데 묶어 관리하기 쉽고, 다른 곳에서 쉽게 코드를 재사용할 수 있다.
이름 공간이 구분되어 이름에 대한 관리를 하기 쉽다.
패키지 여러 모듈을 하나로 모아 만든 묶음이다.
파이썬 3.3 이전에는 패키지의 디렉터리에 __init__.py를 반드시 포함해야 한다.
파이썬 3.3 이상부터는 없어도 되지만, 하위 호환성을 위해 작성할 것을 권장한다.

 

프로그래밍의 패러다임

순차적 프로그래밍

 - 컴퓨터가 해야 할 일의 명령어를 순서대로 나열하고, 그 명령어의 차례대로 실행되는 프로그램을 개발하는 방법

 - 조건에 따라 다르게 실행할 수 있는 제어문과 반복문을 사용

 

절차적 프로그래밍

 - 프로시저(Procedure) 즉 함수를 기본으로 프로그램을 개발

 - 함수에 실행 할 절차들을 명령어로 작성하고, 데이터를 함수에 넣어 실행할 결과를 처리하는 프로그램을 작성

 

구조적 프로그래밍

 - 절차적 프로그래밍과 비슷하지만 단위가 모듈 (보통 파일, 관련 있는 함수 모아 놓은 것)이다.

 - 모듈을 가져다 사용하면서 재사용성을 높인 프로그래밍 방법


객체 지향 프로그래밍

 // 절차적 프로그래밍이나 구조적 프로그래밍은 기본이 함수나 모듈이며 명령어를 모아 놓고 데이터를 처리하는 것을 바탕으로 하지만 이런 함수나 모듈도 같이 다뤄야 할 밀접한 관계가 있는 데이터가 존재한다.

 - 관련 있는 데이터와 함수를 한데 모아 객체로 만들어 그 객체를 기반으로 프로그래밍하는 방법


제어문

if ~ elif ~ else문

if 조건식1:
	코드 블록1
elif 조건식2:
	코드 블록2
else:
	코드 블록3

# print() 함수 : 화면에 문자열로 출력, 다른 타입 같이 출력시 '콤마(,)' 사용
# input() 함수 : 사용자의 입력을 기다리고, 문자열로 입력 받음.

 // swich 파이썬에는 없음.

반복문

for문

for 변수 in range():
	코드 블록
# range() 함수의 각 결과가 변수로 대입되어 반복

for 변수 in 문자열:
	코드 블록
# 문자열의 각 문자가 하나씩 변수로 대입되어 반복

for 변수 in 리스트:
	코드 블록
# 리스트의 각 요소가 하나씩 변수로 대입되어 반복

for 변수 in 튜플:
	코드 블록
# 튜플의 각 요소가 하나씩 변수로 대입되어 반복

for 변수 in 딕셔너리:
	코드 블록
# 딕셔너리의 키가 하나씩 변수로 대입되어 반복

for 변수 in 셋:
	코드 블록
# 셋의 각 요소가 하나씩 변수로 대입되어 반복

 

break 문 - 반복을 즉시 멈추고, 반복문 밖으로 제어가 빠져나감

continue 문 - 다음 순서의 반복 시작점으로 제어가 이동

 

// 리스트 컴프리헨션

array = []
for i in range(1, 10, 2):
	array.append(i*i)

# 위의 코드 = 아래 코드
array = [i*i for i in range(1, 10, 2)]

# 조건도 붙일 수 있다.
array = [i*i for i in range(1, 10, 2) if i*i > 30]

 

while문

while 조건식:
	코드 블록

함수의 개요

함수(function) 

 - 연관성 있는 코드들을 묶어 놓은 것으로, 여러 번 사용할 것을 고려해 만든 코드 조각

 - 프로그램을 적적하게 나누어 함수화 하면 이해하기 쉽고 사용하기 편리하다.

 - 같은 기능의 코드가 중복되어 분산되지 않고 모여 있으므로 수정할 부분이 줄어 유지보수가 편하다.

// 함수 용어 정리

용어 의미 유사어
function (대개 리턴 값이 있는) 코드 묶음 함수
procedure (리턴 값이 필요 없는) 코드 묶음 프로시저
parameter 함수가 호출될 때 넘겨받은 데이터를 저장할 변수들 매개변수, param, 파라미터
argument 함수를 호출할 때 같이 넘겨지는 변수들 인자, 인수, arg, args, argv
return value 함수 안의 코드가 실행 후 결과 값을 호출한 곳으로 돌려주는 변수 리턴 값, 반환 값, 결과 값
call 주체적으로 함수를 "호출하다"라는 의미
대개 사용자가 구현된 특정 함수를 호출하는 것을 뜻함.
호출, execute, 실행하다, 부르다
caller 호출자. 호출한 곳 콜러
callee 호출된 자. 호출된 곳 콜리
callback 호출 당하다. 수동적으로 호출되는 의미 콜백
callback function 대개 사용자가 구현해 놓으면 운영 체제에 의해 특정 이벤트나 사오항이 되었을 때 실행되는 변수 콜백 함수, handler, event handler

내장 함수

절댓값 : abs(x)

 - 주어진 정수나 실수의 절댓값을 구한다.

 

진수 변환 : bin(n), oct(n), hex(n)

 - 10진수를 bin(n)은 2진수로, oct(n)은 8진수로, hex(n)은 16진수로 변환한다.

 

연산 : max(), min(), sum(), pow()

 - max() : 최댓값 / min() : 최솟값 / sum() : 합계 / pow() : 거듭제곱

 

반올림 : round()

 - 주어진 수의 특정 위치에서 반올림 값을 구한다.

 - 반올림 자릿수를 생략할 경우 소수 첫째 자리에서 반올림한다.

 

// 리스트 관련 내장 함수

reverse() : 리스트의 현재 상태 거꾸로
sort() : 정렬
sort(reverse = True) : 역정렬

for index, value in enumerate(list):
	print("인덱스", index, "위치의 값 :", value)

 

사용자 정의 함수

 - 사용자가 직접 만들어 사용하는 함수

 - 내장 함수와 같은 이름의 사용자 정의 함수를 만들어 쓸 경우 사용자 정의 함수가 우선 실행된다.


매개변수에 가변 인수가 있는 함수

# star 함수 정의
def star(shape, *n):
    for i in n:     # for i in range(len(n)):
        print(shape*i)      # print(shape * n[i])

star("♬", 3)
star("♡", 1, 2, 3)

 

디폴트 값을 갖는 함수

def rolling_dice(pip=6, repeat=1):
    for r in range(1, repeat+1):
        n = random.randint(1, pip)
        print(pip, "면 주사위 굴린 결과", r, " : ", n)
    print()
rolling_dice()
rolling_dice(3, 2)
rolling_dice(repeat=3)

 

하나의 값을 리턴하는 함수

def dice(pip):
    result = random.randint(1, pip)
    return result
print("6면 주사위의 값은 :", dice(6))

'전공' 카테고리의 다른 글

Java_예외 처리, 스레드  (0) 2024.10.08
Java_컬렉션 제네릭  (7) 2024.10.08
자료구조_비선형 구조  (0) 2024.07.09
자료구조_선형 구조  (0) 2024.07.09
자료구조_자료구조와 알고리즘  (0) 2024.07.09