1. 연산자
1) 비교 연산자
- __gt__, __lt__, __gte__, __lte__
- >: 왼쪽 값이 오른쪽 값보다 큼 (a > b) → False
- <: 왼쪽 값이 오른쪽 값보다 작음 (a < b) → True
- >=: 왼쪽 값이 오른쪽 값보다 크거나 동일 (a >= b) → False
- <=“ 왼쪽 값이 오른쪽 값보다 작거나 동일 (a <= b) → True모든 종류의 데이터에서 가능
- ==: 값이 동일함 (a == b) → False
- !=: 값이 동일하지 않음 (a != b) → True
2) 산술 비트 연산자
- 그래픽 프로그램의 색상 관련 기능 과 프로그램의 단축 키 그리고 삭제 나 복사를 구현할 때 사용합니다.
- 정수 데이터를 2진수로 변환해서 비트 단위로 연산을 수행 한 후 결과를 10진 정수로 리턴하는 연산자로 시스템 프로그래밍이나 데이터 분석 분야에서 많이 이용
- &: AND 연산으로 둘 다 1일 때만 1
- |: OR 연산. 둘 중 하나만 1이여도 1
- ^: XOR 연산. 두 개의 데이터가 다르면 1
- ~: 1의 보수 연산. (~a) = -61 → 1100 0011
- <<: 왼쪽 시프트 연산자. 변수의 값을 왼쪽으로 지정된 비트 수 만큼 이동해주는 연산자로 한 번 이동할 때 마다 곱하기 2 한 효과
- >>: 오른쪽 시프트 연산자. 변수의 값을 오른쪽으로 지정된 비트 수 만큼 이동해주는 연산자로 한 번 이동할 때마다 나누기 2한 효과
3) 논리 비트 연산자
- and: 둘다 True 일 때만 True 이고 나머지 경우는 False
- or: 둘다 False일 때만 False 이고 나머지 경우는 True
- not: True 이면 False 이고 Fasle 일 때는 True
- and와 or는 조건의 순서를 변경해도 결과는 동일
- 그러나 and가 or 보다 우선순위가 높음
- and 는 앞의 데이터가 Fasle 이면 뒤의 데이터는 확인하지 않고 or는 앞의 데이터가 True이면 뒤의 데이터를 확인하지 않음
- bool 데이터가 아닌 경우
- 숫자 데이터는 0이면 False 그 이외의 경우는 True 로 간주
- 컨테이너는 데이터가 없으면 False 그 이외의 경우는 True로 간주
📍퀴즈: 윤년의 조건
- 4의 배수이고 100의 배수가 아닌 경우
- 400의 배수인 경우
년도가 year 라는 변수에 저장된 경우 윤년 판별 조건을 작성
year % 4 == 0 and year % 100 != 0 or year % 400 == 0
year % 400 == 0 or year % 4 == 0 and year % 100 != 0
4) 기타 연산자
- type(데이터): 데이터의 자료형을 문자열로 리턴: 외부에서 데이터를 읽어왔을 때 타입을 확인하기 위한 용도로 사용
- id(데이터): 저장 위치를 구분하기 위한 코드 리턴: 2개의 데이터가 저장된 곳이 같은 데이터인지 확인할 때 이용
5) 데이터 형 변환
- 데이터의 형식을 변경하는 것
- 자료형(데이터)
- 모든 데이터는 str로 변경 가능
- 숫자 데이터로 변경은 가능한 경우만 수행하고 그렇지 않으면 에러가 발생
2. 파이썬에서 콘솔 입출력
- 출력: print
- 입력: input([message])
- 입력받은 데이터는 무조건 문자열로 리턴
3. 제어문
프로그램의 흐름을 변경하는 것으로 반복 과 분기가 있음
1) if - 조건 분기
- 기본 형식
if bool 결과식이나 변수:
결과식이나 변수가 True 일 때 수행할 문장
[elif 앞의 조건이 False 일 때 판별할 bool 결과식이나 변수:
결과식이나 변수가 True 일 때 수행할 문장]
[else:
앞의 모든 조건이 False 일 때 수행할 문장]
- elif 는 개수 제한 없음
- else 는 생략하거나 한 번만 나와야 함
- else를 사용할 때 예외적인 처리로 이용하는 경우도 있습니다.
📍숫자 데이터를 입력받아서 아래 조건에 따라 출력하기
- 80-100 사이면 합격
- 60-79 사이면 보류
- 0-59 사이면 불합격
#입력받아서 정수로 변환
score = int(input("점수를 입력하세요:"))
if score >= 80 and score <= 100:
print("합격")
elif score >= 60 and score <= 79:
print("보류")
elif score >= 0 and score <= 59:
print("불합격")
else:
print("잘못된 점수를 입력한 것 같습니다.")
2) switch - 값에 의한 분기
- python 에서는 switch 가 없습니다.
- python 3.10 버전에서 match - case를 도입
- 기본 형식
match 데이터:
case 값1:
데이터가 값1일 때 수행할 문장
# case는 여러개 사용 가능
# default를 만들 때는 마지막 case _: 로 만들면 됨
3) while - 반복
- 기본 형식
# 결과식이 False 가 될 때 까지 내용을 반복
while bool 결과식이나 변수:
반복할 내용
# 무한 반복
while True:
반복할 내용
📍1부터 10까지 순서대로 출력
n = 1
while n <= 10:
print(n)
n = n + 1
📍빨강 파랑 녹색을 번갈아 가면서 출력하도록 작성
import time
n = 0
while True:
if n % 3 == 0:
print("빨강")
elif n % 3 == 1:
print("파랑")
else:
print("녹색")
match n % 3:
case 0:
print("빨강")
case 1:
print("파랑")
case 2:
print("녹색")
n = n + 1
time.sleep(1)
📍1-2025년까지 윤년의 개수 구하기
n = 1
count = 0
while n <= 2025:
if n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
count = count + 1
n = n + 1
print(count)
- while ~ else
- else는 반복문을 중간에 중단하지 않고 완료했을 때 수행할 문장을 기록
📍1부터 10까지 출력하고 정상적으로 완료되면 완료라고 출력
n = 1
while n <= 10:
print(n)
n = n + 1
if n == 11:
print("완료")
4) for - 순회
- 컨테이너의 데이터를 순차적으로 하나씩 접근할 때 사용
- 기본 형식
for 임시변수 in 컨테이너:
수행할 내용
- 임시변수를 사용하지 않는 경우는 _로 임시변수를 만들면 됩니다.
- range: 숫자를 가지고 컨테이너를 만들어주는 함수
- __iter__: 컨테이너가 for를 사용할 수 있는지 확인하고자 할 때 사용
- for ~ else: 정상적으로 for를 완료했을 때 수행할 구문을 else 에 작성
5) 제어문은 중첩 가능
바깥쪽 제어문에서 시작해서 안쪽 제어문이 전부 수행되고 나면 바깥쪽 제어문의 시작부분으로 이동해서 수행
6) break
- while 이나 for를 수행하는 도중 중단하고 싶을 때 사용
7) continue
- while 이나 for를 수행하는 도중 다음으로 넘어가고 싶을 때 사용
4. Function(함수)
1) 정의
- 한 번에 실행되어야 하는 문장들을 하나의 이름으로 묶어서 독립적으로 실행할 수 있도록 하는 것
- 함수의 이름만 호출하면 함수의 참조가 되고 함수이름()은 함수의 호출(실행)
- 함수 사용의 장점
- 함수 이름과 매개변수를 대입해서 호출하면 함수 안에 만들어진 코드가 실행되기 때문에 동일한 코드를 여러 번 사용해야 하는 경우 코드의 중복을 제거할 수 있어서 유지보수를 할 때 편리
- 코드의 일정 부분을 별도의 논리적인 개념으로 분리할 수 있기 때문에 코드의 가독성을 높여 줌
- 함수의 종류
- Built-In Function(Maker Function, 내장 함수): 파이썬이 제공해주는 함수
- User Define Function(사용자 정의 함수): 개발자가 만든 함수
- 파이썬 함수는 일급 객체(하나의 데이터로 취급)
- 함수도 하나의 자료형
- runtime(실행하는 도중)에 생성하는 것이 가능
- 변수에 대입할 수 있음
- 함수의 매개변수로 사용 가능
- 함수의 결과로 리턴하는 것이 가능
2) python 이 제공하는 함수
- dir(__builtins__) 으로 확인 가능
3) 파이썬에서 함수 정의 방법
- 기본 형식
def 함수이름(인수들):
문장을 나열
return <값>
- 인수는 함수를 호출할 때 넘겨주는 데이터
- return 은 함수를 호출해서 실행한 후 넘겨줄 데이터로 없으면 return 을 생략해도 되고 return None 으로 하면 되는데 return을 만나면 이후 문장은 실행되지 않고 호출한 곳으로 돌아갑니다.
4) 함수 호출
- 기본 형식
함수이름(인수에 해당하는 데이터 나열)
5) return
- 파이썬에서는 함수를 정의할 때 리턴되는 데이터 타입을 기재하지 않아도 되지만 최근에는 가독성 때문에 작성하는 것도 가능
def 함수이름(인수들)->리턴되는데이터의 자료형:
문장을 나열
return <값>
- 여러 개의 데이터를 리턴하고자 하는 경우는 ,로 구분해서 리턴하면 되는데 이 때 리턴되는 데이터의 자료형은 튜플입니다.
- 모든 함수는 여러 개의 데이터를 리턴할 수 없습니다.
- 여러 개의 데이터를 리턴하고자 할 때는 컨테이너 나 인스턴스로 만들어서 리턴합니다.
📍정수 2개를 더해서 리턴하는 함수
- 가독성을 높여주기 위해서 최근에는 함수의 리턴하는 데이터의 타입을 기재함
def integerAddWithInteger(first, second) -> int:
result = first + second
return result
#함수 호출
k = integerAddWithInteger(20, 30)
print(k)
def tupleRetrun(first, second) -> tuple:
result1 = first + second
result2 = first - second
return (result1, result2)
print(tupleRetrun(100, 200))
6) argument(인수, 인자)
- parameter 라고 하기도 하는데 함수를 호출할 때 넘겨주는 데이터
- 함수 내부에서 이 데이터를 가지고 처리를 수행한 후 결과를 돌려주거나 데이터에 변형을 가하게 됩니다.
- 예전에는 인수의 이름만 작성했지만 최근에는 이름:자료형 의 형태로 명시적으로 자료형을 기재하는 것을 권장합니다.
- 인수에 아무런 기호가 없다면 인수는 함수를 호출할 때 반드시 대입해야 합니다.
def tupleRetrun(first:int, second:int) -> tuple:
result1 = first + second
result2 = first - second
return (result1, result2)
print(tupleRetrun(100, 200))
- 매개변수로 스칼라 데이터를 사용하면 값을 복사해서 넘겨주고 벡터 데이터를 사용하면 참조를 복사해서 넘겨줍니다.
- 참조를 넘겨주면 원본 데이터를 변경할 수 도 있습니다.
#스칼라 데이터를 넘겨주면 데이터를 복사해서 넘겨줍니다.
#함수 내부에서 데이터를 변경해도 원본에는 영향이 없습니다.
def callByValue(a:int) -> None:
print("a:", a)
a = a + 1
print("a:", a)
x = 10
callByValue(x)
print("x:", x)
📍벡터 데이터를 넘겨주면 데이터의 참조를 넘겨줍니다.
# 함수 내부에서 데이터의 참조를 받아서 세부 데이터를 수정하면 원본도 같이 수정됩니다..
def callByReference(li:list) -> None:
print("li:", li)
li[0] = li[0] + 1
print("li:", li)
l = [10, 20]
callByReference(l)
print("l:", l)
📍 함수를 호출할 때 매개변수의 이름 과 함께 데이터를 넘기는 것이 가능합니다.
- 이렇게 이름을 사용하면 순서를 변경해서 대입하는 것도 가능합니다.
def sub(first:int, second:int):
result = first - second
return result
print(sub(100, 200))
#이름을 사용해서 매개변수를 설정하는 것도 가능합니다.
print(sub(first=100, second=200))
print(sub(second=200, first=100))
📍파이썬에서는 매개변수를 만들 때 기본값을 설정하는 것이 가능
- def 함수이름(이름:자료형=기본값...) -> 리턴타입:
- 기본값이 있는 매개변수는 호출할 때 생략가능한데 생략하면 기본값으로 작업을 수행합니다.
- 한 번 기본값이 설정되면 그 이후의 매개변수는 전부 기본값을 설정해야 합니다.
def sub(first:int, second:int=0):
result = first - second
return result
print(sub(first = 100, second = 200))
print(sub(first = 100))
- 순수 함수
- 입력하는 데이터가 같으면 항상 동일한 결과를 리턴하는 함수
- 입력하는 데이터를 수정하지 않는 함수
- 매개변수의 unpacking
- 매개변수로 list 나 tuple 또는 set을 대입할 때 * 과 함께 대입하면 자동으로 압축이 해제되서 순서대로 매개변수에 대입됨
- dict 는 key가 대입되며 ** 을 이용해서 대입하면 매개변수 이름 과 대응되는 key 이름으로 매칭
- 가변 매개변수
- 매개변수의 개수에 상관없이 대입받도록 하는 문법
- *을 이용해서 정의하면 매개변수를 tuple 만들어서 사용하고 **을 이용해서 정의하면 dict 가 만들어 집니다.
7) recursion
- 재귀함수라고 하는데 함수가 자기 자신을 내부에서 다시 호출하는 것
- 메모리 부담은 커지지만 코드가 단순화 됩니다.
📍피보나치 수열 구현
- 피보나치 수열: 처음 2개 항은 1 그 다음 부터은 이전 두 개 항의 합
- 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
# 일반적인 코드
def fibonacci1(su : int) -> int:
result = 1
first = 1
second = 1
for _ in range(3, su+1, 1):
result = first + second
second = first
first = result
return result
print(fibonacci1(10))
print(fibonacci1(100))
# 재귀 함수
def fibonacci2(su : int) -> int:
if su == 1 or su == 2:
return 1
else:
return fibonacci2(su - 1) + fibonacci2(su - 2)
print(fibonacci2(10))
print(fibonacci2(100))
📍 실행 시간, 전달 인수, 반환값을 자동으로 출력하는 예제
import time
#Decorate 된 함수를 호출할 때 마다 시간을 측정해서 실행에 소요된 시간, 전달된 인수, 반환값을 출력하는 Decorate
def clock(func):
def clocked(*args):
#현재 시간 저장
t0 = time.time()
#실제 넘어오는 함수(factorial)를 수행해서 결과를 result에 저장
result = func(*args)
#함수를 수행한 후의 시간에서 이전에 저장한 시간을 빼서 걸린 시간을 저장
elapsed = time.time() - t0
#함수 이름을 찾아서 함수 이름 과 결과를 출력
name = func.__name__
arg_str = ', '.join(repr(arg) for arg in args)
print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))
return result
return clocked
@clock
def factorial(n):
return 1 if n < 2 else n*factorial(n-1)
print('6! =', factorial(6))'현대오토에버 모빌리티 sw 스쿨 3기 [클라우드] > PYTHON' 카테고리의 다른 글
| Python 강의 1일차 / 모빌리티 SW 스쿨 / 클라우드반 (0) | 2026.01.03 |
|---|---|
| OOP. Python 강의 / 모빌리티 SW 스쿨 / 클라우드반 (0) | 2025.12.23 |