본문 바로가기

자기계발/대외활동

[공공빅데이터 청년인턴십] [day3 - 07.07(수)] Python 프로그래밍 이해(2)

3일차인 오늘은 다시 파이썬 기본문법에 대해 학습했다.

 

(07.07-수) 강의스케줄(공유용).pdf
0.19MB

 

각각의 챕터 학습을 마친 후 실습시간이 주어진다.

오늘 학습한 6개 챕터의 실습파일은 수업이 종료된 후 압축파일로 제출해야한다.

내가 정리한 오늘 수업 및 실습내용은 아래와 같다.

 


 

실습(1). Python 프로그래밍 이해(2) - 7강

파이썬 셋/집합, 딕셔너리

# 파이썬 셋(set)
### 원소의 중복을 허용하지 않음

set1 = {'A','B','C','D','A','D','E','F','B'}
set1
# {'A', 'B', 'C', 'D', 'E', 'F'}

### 인덱싱과 슬라이싱 불가
set1[0] # TypeError 
et1[:5] # TypeError 

### remove()/pop() 함수 : 셋의 지정된 원소/마지막 원소 제거
set1.remove('A')
set1
# {'B', 'C', 'D', 'E', 'F'}

set1.pop()
set1
# {'B', 'C', 'E'}






# 파이썬 셋(set) 집합 연산
### 파이썬 셋은 교집합, 합집합, 차집합 등의 집합 연산자 및 연산 함수 가능
set1 = {'A','B','C','D','E','F'}
set2 = {'B','D','G','H'}


#### 파이썬 셋의 교집합 연산 & / intersection() 함수
set1 & set2
set1.intersection(set2)


#### 파이썬 셋의 합집합 연산 | / union() 함수
set1 | set2
set1.union(set2)


#### 파이썬 셋의 차집합 연산 - / difference() 함수
set1 - set2
set1.difference(set2)


# #### 파이썬 셋의 대칭 차집합 연산 ^ / symmetric_difference() 함수
set1 ^ set2
set1.symmetric_difference(set2)






# 파이썬 딕셔너리
### 파이썬 딕셔너리(dict) 원소 추가
중간고사 = {
    "수학":100,
    "영어":90,
}
중간고사    # {'수학': 100, '영어': 90}


# ### 파이썬 딕셔너리(dict) 원소 확인 및 변경
중간고사['국어'] = 85
중간고사    # {'수학': 100, '영어': 90, '국어': 85}

중간고사['영어']    # 90

중간고사['영어'] = 95
중간고사    # {'수학': 100, '영어': 95, '국어': 85}


# ### 파이썬 딕셔너리(dict) keys()와 values(), items() 함수


list(중간고사.keys())   # ['수학', '영어', '국어']
list(중간고사.values()) # [100, 95, 85]
list(중간고사.items())  # [('수학', 100), ('영어', 95), ('국어', 85)]
중간고사.items()
# dict_items([('수학', 100), ('영어', 95), ('국어', 85)])



### 파이썬 딕셔너리(dict) 랜덤 삭제
### pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.
중간고사.pop('국어')    # 85

 

 

 

실습(2). Python 프로그래밍 이해(2) - 8강

파이썬 비교/논리 연산자, 중첩/복합 조건문

# 파이썬 비교 연산자와 논리 연산자
### 파이썬 비교 연산자
x=10; y=5
x == y  # False
x != y  # True
x > y   # True
x < y   # False
x >= y  # True
x <= y  # False


# ### 파이썬 논리 연산자
x=True; y=False
x and y # False
x or y  # True
not x   # False





# 파이썬 조건문
### 조건에 따라 특정 코드 블럭을 실행하도록 하기 위한 구문
'''
if, elif, else가 있음</br>
블록의 시작을 표시 콜론(:)사용</br>
블록 영억을 표시하기 위해 들여쓰기(indentation) 필요</br>
(들여쓰기에 따라 전혀 다른 실행결과가 나타날 수 있음 주의)
'''

x,y = 10,5
if x > y:
    print('x가 y보다 큽니다.')
# x가 y보다 큽니다.


x,y = 5,10
if x > y:
    print('x가 y보다 큽니다.')
else:
    print('x가 y보다 작습니다.')
# x가 y보다 작습니다.


x,y = 10,10
if x > y:
    print('x가 y보다 큽니다.')
elif x == y:
    print('x와 y가 같습니다.')
elif x < y:
    print('x가 y보다 작습니다.')
# x와 y가 같습니다.


score=90
if score >= 90:
    print('A학점입니다.')
elif score >= 80:
    print('B학점입니다.')
elif score >= 70:
    print('C학점입니다.')
elif score >= 60:
    print('D학점입니다.')
else:
    print('F학점입니다.')
# A학점입니다.






# 파이썬 중첩/복합조건문
### 조건문 내에서 다른 조건문 포함

a = True
x,y=5,10

if a == True:
    print('a는 True입니다.')
    if x > y:
        print('x가 y보다 큽니다.')
    else:
        print('x가 y보다 작습니다.')
else:
    print('a는 False입니다.')
# a는 True입니다.
# x가 y보다 작습니다.



### 중첩/복합 조건문을 이용한 입장료 계산
회원 = True
나이 = 30

입장료 = 0
    
if 회원:
    if 나이 > 6 and 나이 <=13:
        입장료 = 2500
    elif 나이 > 14 and 나이 <= 59:
        입장료 = 5000
else:
    if 나이 > 6 and 나이 <=13:
        입장료 = 5000
    elif 나이 > 14 and 나이 <= 59:
        입장료 = 10000
        
print(f'입장료는 {입장료:,}입니다.')
# 입장료는 5,000입니다.



입장료 = 0

if 나이 <= 6 or 나이 >= 60:
    입장료 = 0
elif 나이 > 6 and 나이 <=13:
    입장료 = 5000
elif 나이 > 14 and 나이 <= 59:
    입장료 = 10000

if 회원:
    입장료 = int(입장료 * 0.5)

print(f'입장료는 {입장료:,}입니다.')
# 입장료는 5,000입니다.

 

 

 

실습(3). Python 프로그래밍 이해(2) - 9강

파이썬 셋/집합, 딕셔너리

# for 반복문과 list
for num in [1,2,3]:
    print(num)
for st in ['Hello', 'World', 'Python']:
    print(st)
    
# for 반복문과 dictionary
score = {'국어':95,'영어':90,'수학':80}
for item in score.keys():
    print(item)    
for item in score.values():
    print(item)
for key, value in score.items():
    print(f'{key}과목 점수는 {value}점 입니다.')
    
# for 반복문과 range()함수
list(range(10))
list(range(1, 11))
list(range(10, 0, -1))

for i in range(1,11,2):
    print(i)
for i in range(0,11,2):
    print(i)

# for 반복문과 else 구문
for i in range(1,10):
    ans = 2 * i
    print(f'2 X {i} = {ans}')
else:
    print('구구단 2단을 종료합니다.')
    
    
   
   
# while 반복문
a = 0
while a< 10:
    print(a)
    a += 1 #a = a+1
else:
    print(f'a가 {a}이므로 종료합니다.')
        
# while 무한반복
x = 0
while True:
    x += 3
    print(x)
    if x > 100 and x % 3 == 0:
        #print(x)
        break    
        
        
        
        
# 리스트 컴프리헨션(List Comprehension)
### 리스트 각 원소(Element)들에 대해 연산을 수행하여 업데이트

list1 = list(range(1,11))
print(list1)

list2 = [i*2 for i in list1]
list2
    
### 리스트 원소(Element)들 필터링하여 연산 수행
### 형식 :  [ 표현식 for 변수 in 리스트 객체  if 조건식]

list1 = list(range(1,11))
print(list1)

list3 = [i**2 for i in list1 if i % 2 == 1] # list1 원소 중 홀수 값만 꺼내서 제곱을 한 뒤, 제곱을 해줌 
list3

 

 

 

실습(4). Python 프로그래밍 이해(2) - 10강

파이썬 함수, 매개변수

# 파이썬 함수
### 정의된 특정 기능을 수행하는 코드 집합
### 호출되어야 실행되는 Collable Object
### 빈번하게 사용되는 기능을 함수로 정의하여 재사용
### 함수 정의와 함수 호출 및 실행으로 구분
'''
[형식]
함수의 입력(매개변수 parameter) *매개변수 생략가능. 선택옵션
함수의 기능(실행코드)
함수의 출력(반환값 return value) *반환값 생략가능. 선택옵션
'''
def add1():
    print("더하기 함수입니다.")
add1()

# 파이썬 사용자 정의 함수
'''
매개변수 parameter: 함수 정의부분에 넘겨지는 값을 받기 위한 변수
인자 argument: 함수를 호출하는 시점에 실제 전달되는 값
'''

'''
[형식]
            매개변수 x       매개변수 o
            
반환값 x    def 함수명():    def 함수명(매개변수):
                함수 기능       함수 기능
                
반환값 o    def 함수명():    def 함수명(매개변수):    
                함수 기능       함수 기능
            return 반환값    return 반환값
'''

# 매개변수 x, 반환값 x
def add1():
    print("더하기 함수입니다.")
add1()
# 매개변수 o, 반환값 x
def add2(x,y):
    print(x+y)
add2(1,2)
# 매개변수 o, 반환값 x
def add3():
    x,y=2,4
    return x+y
re_val = add3()
print(re_val)
# 매개변수 o, 반환값 o
def add4(x,y):     # 매개변수
    return x+y
re_val = add4(2,4) #인자
print(re_val)




# 함수의 매개변수
'''
매개변수 parameter: 함수 정의부분에 넘겨지는 값을 받기 위한 변수
인자 argument: 함수를 호출하는 시점에 실제 전달되는 값
'''

# 매개변수 기본값
def square2(x=2, y=3):
    x = x ** 2
    y = y ** 2
    return x, y
square2()
square2(2)
square2(2,3)

# 매개변수 지정 인자값
def square2(x=2, y=3):
    x = x ** 2
    y = y ** 2
    return x, y
square2(4,5)
square2(y=5,x=4)


# 가변 매개변수
'''
매개변수 앞에 *(애스터리스크)를 붙여서 매개변수 정의
일반 매개변수를 순서대로 할당한 후, 나머지 인자는 튜플로 할당

(eg).
def 함수명 (a, *b)
    print(a, b)

a는 일반 매개변수, b는 가변 매개변수이다.    
'''
def changeable(x, *y):
    print(x,y)
changeable(1)               # 1 ()
changeable(1, 2)            # 1 (2,)
changeable(1, 2, 3)         # 1 (2, 3)
changeable(1, 2, 3, 4, 5)   # 1 (2, 3, 4, 5)

 

 

 

실습(5). Python 프로그래밍 이해(2) - 11강

파이썬 모듈, 패키지

# 파이썬 패키지
'''
관련된 모듈들의 집합
패키지는 디렉토리 단위로 관리
'''

# 파이썬 모듈
'''
모듈(Module)은 파이썬 코드를 관리하기 위한 논리적 단위
일반적으로 하나의 파이썬 .py파일이 하나의 모듈
모듈 내에는 함수, 클래스, 혹은 변수들의 정의가능, 실행 코드 포함

[종류]
- 기본 모듈 : os, sys, random ... (anaconda 설치 디렉토리의 lib 디렉토리에 위치)
- 사용자정의 모듈 : 사용자가 개발한 모듈
- 3rd party 모듈 : numpy, pandas ... 
  * 콘솔에 pip list 명령어 입력 : 설치된 3rd party 모듈 확인
  * 콘솔에 help('모듈명') 명령어 : 내장함수 이용, 모듈 사용 도움말 확인
'''

# 모듈 import
### 모듈을 사용하기 위해서는 from, import 구문을 사용
'''
import [모듈명]
import [모듈명] as [Alias]명
from [패키지명] import [모듈명] 
from [모듈명] import [클래스명 | 함수명] 
'''
### import [모듈명]
import os
os.getcwd()  # 'C:\\workspace\\python'
os.listdir() # ['.idea', '.ipynb_checkpoints', '03-1.연산자.ipynb', '03-3.내장함수.ipynb', '04-1.변수.ipynb', '08-1.비교논리연산자.ipynb', 'EliceCoding', 'HelloWorld.py', 'jupyter_lab.bat', 'lecture_notes', 'main.py', 'test.py', 'test_for.py', '실습(1)', '실습(2)', '실습(3)', '실습(4)', '실습(5)', '실습(6)']

### import [모듈명] as [Alias]명
import numpy as np
np.absolute(-3)
np.sqrt(16)

### from [패키지명] import [모듈명] 
# * 나중에 한 번 더 확인하기 (ImportError: DLL load failed while importing _arpack: 지정된 프로시저를 찾을 수 없습니다.)
from scipy import stats 
stats.hmean([1,2,3]) #1.6363636363636365
stats.variation([1,2,3]) #0.408248290463863

### from [모듈명] import [클래스명 | 함수명] 
from datetime import datetime
now = datetime.now()
now.year
now.month


# 모듈의 물리적 위치
### 파이썬에서 모듈 import시 해당 모듈의 물리적 위치 탐색순서
'''
현재 디렉토리
환경변수 pythonPATH에 지정된 경로
python이 설치된 경로 및 하위 라이브러리 디렉토리 경로
'''
### python의 기본모듈인 sys모듈 import 및 sys.path를 이용하여 확인
import sys
sys.path






# 사용자 정의 모듈
### 현재 디렉토리에 myprint.py로 저장
### 현재 디렉토리에 mymodule 디렉토리 생성 및 myprint2.py로 저장
### 경로:  C:\workspace\python


# myprint.py의 모듈 import 및 함수 사용 (tab키로 함수 확인)
import myprint
hello = 'Hello World Python'
myprint.print1(hello)
'''
**************************************************
Hello World Python
**************************************************
'''
myprint.print2(hello)
'''
--------------------------------------------------
Hello World Python
--------------------------------------------------
'''

# myprint2.py의 모듈 import 및 함수 사용
from mymodule import myprint2
myprint2.print3(hello)
'''
**************************************************
Hello World Python
--------------------------------------------------
'''
myprint2.print4(hello)
'''
--------------------------------------------------
Hello World Python
**************************************************
'''

 

 

 

실습(6). Python 프로그래밍 이해(2) - 12강

파이썬 파일시스템, 입/출력

# 파이썬 파일 입력

### 파이썬 파일 읽기
'''
1) 파일 객체 생성
    파일객체 = open(파일경로/파일명, 모드)
2) 파일 읽기(라인 단위)
    for 변수 in 파일객체
3) 파일객체 닫기
    파일객체.close()
'''
fr = open('./실습(6)/hello.txt','r')
for line in fr:
    print(line)
fr.close()

# 파이썬 파일 읽기 - 모드 (r)        
'''
r   파일을 읽기 모드로 open 
w   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 overwrite
x   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 error
a   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 append
+   파일을 읽기/쓰기 모드로 open
'''

###  파이썬 파일 읽기 - with 구문
'''
1) 파일 객체 생성
    with open(파일경로/파일명, 모드) as 파일객체
2) 파일 읽기(라인단위)
'''
with open('./실습(6)/hello.txt','r') as fr:
    for line in fr:
        print(line)
        
        
        
        


# 파이썬 파일 출력

### 파이썬 파일 쓰기
'''
1) 파일 객체 생성
    파일객체 = open(파일경로/파일명, 모드)
2) 파일 쓰기(라인 단위)
    파일객체.write()
3) 파일객체 닫기
    파일객체.close()

[모드]
r   파일을 읽기 모드로 open 
w   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 overwrite
x   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 error
a   파일을 쓰기 모드로 open
    동일 경로/파일명 존재시 append
+   파일을 읽기/쓰기 모드로 open
'''

fw = open('./실습(6)/hello_write.txt','w')
fw.write('Hello World Python!!!\n')
fw.write('Welcome to Python!!!\n')
fw.write('Welcome to Python World!!!\n')
fw.close()

### 파이썬 파일 쓰기 - 모드(x)
with open('./실습(6)/hello_write2.txt','x') as fw:
    fw.write('Hello World Python!!!\n')
    fw.write('Welcome to Python!!!\n')
    fw.write('Welcome to Python World!!!\n')

### 파이썬 파일 쓰기 - 모드(a)
with open('./실습(6)/hello_write.txt','a') as fw:
    fw.write('New Line Append!!!')
    
    
    
    
    
    
    
# 파이썬 파일시스템

### OS 모듈을 이용한 파일시스템 접근
'''
os모듈은 운영체제(os)와 관련된 파이썬 기본 모듈
파일시스템 접근을 위해 os 모듈 사용
os모듈을 import한 후 사용
    import os
    os.함수()
    os.변수
'''

import os
file_list = os.listdir('.')
file_ipynb = [f for f in file_list if f.endswith('.ipynb')]
file_ipynb

### os.getcwd() 함수 : 현재 디렉토리 반환
os.getcwd()
### os.mkdir() 함수: 디렉토리 생성
os.mkdir('test')
### os.rmdir() 함수: 디렉토리 삭제
os.rmdir('test')
### os.path.join() 함수 : 현재 os의 파일구분자로 연결
os.path.join('.','test')
### os.path.abspath() 함수 : 지정된 파일의 절대경로 반환
os.path.abspath('hello.txt')
### os.path.isfile() / isdir() 함수 : 파일/디렉토리 여부 출력
os.path.isfile('myprint.py')
os.path.isdir('hello_write.txt')
os.path.isfile('실습(6)')
os.path.isdir('실습(6)')
### os.path.split() 함수 : 디렉토리명과 파일명의 분리
os.path.split(os.path.abspath('hello.txt')) # ('C:\\workspace\\python', 'hello.txt')
### os.path.splitext() 함수 : 파일명과 확장자의 분리
os.path.splitext('hello_write.txt') # ('hello_write', '.txt')