변수·조건문·반복문·자료형·함수까지 — 파이썬 기초를 실습 코드로 익힙니다.
파이썬(Python)은 1991년 귀도 반 로섬이 발표한 고급 프로그래밍 언어입니다. 이름은 그가 좋아하던 코미디 〈Monty Python's Flying Circus〉에서 따왔어요. 배우기 쉽고 읽기 좋아 전 세계에서 가장 인기 있는 언어 중 하나입니다.
Simplicity 단순함Efficiency 효율성Easy 쉬움Readability 가독성Extensibility 확장성
import antigravity 를 실행하면 재미있는 웹툰 페이지가 열려요.아나콘다에는 파이썬과 데이터 과학용 패키지 1,400여 개가 들어 있어, 하나씩 설치하는 수고를 덜어줍니다.
가상환경·버전 관리도 쉽죠. (설치 전 기존 Python은 삭제) anaconda.com에서 최신 버전을 받습니다.
# 설치 확인 C:\Users\user> pip list # 설치된 패키지 목록 C:\Users\user> python -V # 파이썬 버전 확인 C:\Users\user> pip install tensorflow # 텐서플로 추가 설치
시작 메뉴에서 Jupyter Notebook을 실행하면 웹브라우저 방식으로 열립니다.
[New] → Folder로 작업 폴더를 만들고, [New] → Python3로 새 노트를 만든 뒤
셀에 코드를 쓰고 Ctrl+Enter 또는 Shift+Enter로 실행합니다.
| 종류 | 연산자 |
|---|---|
| 산술 | + - * / · //(몫) %(나머지) **(제곱) |
| 논리 | and(&) or(|) not |
| 관계 | > >= < <= ==(같다) !=(다르다) |
| 포함 | in(포함) not in(미포함) |
+ 의 의미가 다르다print(20 + 20) # 숫자 → 덧셈 print("20" + "20") # 문자열 → 이어붙이기 print([20] + [20]) # 리스트 → 합치기
print("3+5*2 =", 3+5*2) print("3.14//2 =", 3.14//2) # 몫 print("3%2 =", 3%2) # 나머지 print("3**2 =", 3**2) # 제곱 = pow(3,2) print("5<10 =", 5<10) print("not(1==2) =", not(1==2)) print("'a' in 'abcd' =", 'a' in 'abcd')
print("심심이 : 이름을 알려주세요") name = input() print(f'{name} : 반가워 내 이름은 {name}이야') print(f'심심이 : {name}님 반갑습니다')
input()으로 키보드 입력을 문자열로 받아 name에 저장{ } 안의 값을 문자열에 끼워 넣는 포매팅이 된다문자열·리스트는 위치(인덱스)로 값을 꺼낼 수 있습니다. 0부터 시작(정방향), 뒤에서부터는 -1(역방향)입니다.
jumin = "770101-1233004" print("성별 : " + jumin[7]) print("생년월일 : " + jumin[:6]) # 처음~5번 print("뒤 7글자 : " + jumin[7:]) # 7번~끝 print("뒤에서부터 : " + jumin[-7:])
A와 a는 다름)i = 1 while i <= 5: print(i, end=' ') i += 1 print() print(type(i)) # 자료형 print(id(i)) # 식별자(메모리 주소) del(i) # 변수 삭제
end=' '는 줄바꿈(\n) 대신 한 칸 띄우기조건이 참일 때만 실행합니다. 파이썬은 들여쓰기(indent)로 코드 블록을 구분해요.
a = int(input("정수를 입력하세요 ")) if a % 2 == 0: print("짝수") else: print("홀수")
a % 2가 0이면 짝수, 아니면(else) 홀수나이 = int(input("나이를 입력하세요 ")) if 20 <= 나이 < 30: print("20대") elif 30 <= 나이 < 40: print("30대") elif 40 <= 나이 < 50: print("40대") else: print("10대 이하이거나 60대 이상입니다.")
나이 같은 한글 변수도 쓸 수 있어요(가독성을 위해 보통 영어를 권장).range(a) → 0 이상 a 미만range(a, b) → a 이상 b 미만range(a, b, c) → a부터 c 간격 (예: range(10,0,-2) → 10,8,6,4,2)hap = 0 for i in range(1, 101, 2): # 1,3,5,…,99 hap += i print(hap)
li = [1,2,3,4,5,6,7,8,9,10,11,12,13] hap = 0 for x in li: if x > 10: break # 반복 즉시 탈출 hap += x print('hap =', hap)
break는 가장 가까운 반복문 하나만 빠져나온다continue는 아래를 건너뛰고 다음 반복으로ans = "강서" guess = "" while ans != guess: guess = input("최고의 영재교육 센터는? ") print("당신은 똑똑이!! ^^")
파이썬의 대표 자료구조 4가지. 각각 순서·수정 가능 여부가 다릅니다.
| 자료구조 | 순서(인덱스) | 수정 | 생성 | 예 |
|---|---|---|---|---|
| List 리스트 | 있음 | 가능 | [] | [1.2,'hi',3,True] |
| Tuple 튜플 | 있음 | 불가 | () | (1.2,'hi',3) |
| Set 집합 | 없음 | 가능 | set() | {1,2,3} 중복X |
| Dict 딕셔너리 | 없음* | 가능 | {} | {'국어':89} |
stuff = list() stuff.append('book') # 끝에 추가 stuff.append(99) some = [1,1,2,3,5,8,13] print(8 in some) # 포함 여부 print(len(some), max(some), sum(some)) friends = ['Song','Cali','John'] friends.sort() # 정렬 print(friends)
len() max() sum() — 괄호에 자료를 넣어 사용.append() .sort() — 자료 뒤에 점(.)을 찍어 사용cities = ['서울','대전','대구','부산'] print(cities[0:3]) # 0~2번 cities.insert(2, '제주') # 2번 위치에 삽입 cities.extend(['평양','개성']) # 여러 개 추가 print(cities[::2]) # 2칸 간격 print(cities[::-1]) # 역순
변수[시작:끝:증감] — 끝 인덱스는 포함하지 않아요. append는 통째로, extend는 원소 하나씩 넣습니다.num = (1, 9, 2) print(num[0], max(num)) # num[1] = 30 → 오류! 튜플은 값 변경 불가 one = ('one',) # 원소 1개면 콤마 필수 print(type(one))
counts = dict() names = ['kim','park','moon','ryu','kim','moon'] for name in names: counts[name] = counts.get(name, 0) + 1 print(counts)
get(키, 기본값) — 키가 있으면 그 값을, 없으면 기본값(0)을 돌려줌.keys() .values() .items()로 키/값/쌍을 꺼낸다s1 = {1,2,3,4,4,5} # 중복은 자동 제거
s2 = {1,2,3,5,8}
print(s1 & s2) # 교집합
print(s1 | s2) # 합집합
print(s1 - s2) # 차집합
my_list = ['A','B','B','A']
print(list(set(my_list))) # 리스트 중복 제거
score = '100, 92, 84, 78, 99' score = score.split(',') # 문자열 → 리스트 score = list(map(int, score)) # 각 원소를 int로 print(score) favorite = ["love","dream","song"] print('-'.join(favorite)) # 리스트 → 문자열
li = [i for i in range(11) if i % 2 == 0] print(li) # 피타고라스 방정식 해 찾기 (x<y<z) pyth = [(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if x**2 + y**2 == z**2] print(pyth[:3])
남주 = ['로미오','이몽룡','백석'] 여주 = ['줄리엣','성춘향','자야'] for i, (a, b) in enumerate(zip(남주, 여주)): print(i, a, b)
zip은 여러 리스트를 같은 위치끼리 묶고, enumerate는 번호(인덱스)를 함께 준다prime = [i for i in range(2,50) if all(i%j != 0 for j in range(2,i))] print(prime)
자주 쓰는 코드나 큰 프로그램을 작은 블록으로 묶는 것이 함수입니다. def로 정의해요.
return으로 결과를 함수 밖으로 돌려줍니다.# return이 없는 경우 def plus_print(a, b): print(a + b) # return이 있는 경우 def times_return(a, b): return a * b plus_print(3, 4) # 7 출력만 print(times_return(3, 4)) # 12 print(times_return(3, ['Python'])) # 리스트도 곱셈됨!
def sign(x): if x > 0: return '양수' elif x < 0: return '음수' else: return '0' for x in [-1, 0, 1]: print(sign(x))
x = "전역변수" def func_01(): x = "지역변수" # 함수 안에서만 유효 print(x) def func_02(): print(x) # 전역변수 사용 func_01() func_02() print(x)
def 소인수분해(n): 인수 = [] 나눔수 = 2 while 나눔수 <= n: if n % 나눔수 == 0: 인수.append(나눔수) n = n / 나눔수 else: 나눔수 += 1 print(인수) if __name__ == '__main__': # 프로그램 시작점 N = int(input("자연수 N: ")) try: 소인수분해(N) except Exception as e: print(e)
__name__ == '__main__' — 이 파일을 직접 실행할 때만 동작하는 시작점try / except — 오류가 나도 프로그램이 멈추지 않게 예외 처리기초를 익혔다면, 원본 교재의 이 주제들로 확장할 수 있습니다. (필요하면 각 단원도 이 교재처럼 상세하게 만들어 드립니다.)
| 주제 | 내용 |
|---|---|
| 모듈·패키지 | import로 남이 만든 기능 가져오기, math·random 등 표준 라이브러리 |
| 코딩 테스트 | 알고리즘 문제 풀이 (정렬·탐색·재귀 등) |
| 웹 크롤링 | HTML 태그를 분석해 웹 데이터 수집 (BeautifulSoup) |
| 데이터 분석 | NumPy(배열·수치연산) · Pandas(표 데이터) · Matplotlib(그래프) |
| 딥러닝 | TensorFlow 환경 구축과 프로그래밍, Colaboratory 활용 |
| 암호 | 소수·소인수분해를 이용한 공개키 암호(RSA)의 원리 |
🐍 여기까지가 Python 언어 기초입니다.
배운 걸 직접 코드로 실행해 보는 게 가장 빠른 공부예요.
구글 Colab이나 Jupyter를 열고 위 예제들을 하나씩 따라 쳐보세요!