단기간에 뛰어난 프로그래머가 되려고 하면 절대 성공할 수 없느니라.
웹서핑하다가 본 글...
저질체력인 나에게는 너무 힘든 싸움이다 ㅠㅠ
몸이 아프니까 노트북도 느릿느릿 버벅이고 아픈것 같은 느낌
그럼에도 불구하고...
오늘도 힘내자 !!
파이썬 기초문풀4
파이썬 기초문풀5
파이썬 중급1
파이썬 중급2
파이썬 중급3
파이썬 중급4
파이썬 중급5~6
파이썬 중급7
예외처리
try~except~else
finally
Excepption 클래스
파이썬 중급8~9
사용자 Exception 클래스
텍스트 파일 쓰기
텍스트 파일 읽기
텍스트 파일 열기
with ~as문
writelines()
readlines(), readline()
파이썬 중급문풀1~2
파이썬 중급문풀3
파이썬 중급문풀4
📝 weekly 데이터 사이언스 스쿨 퀴즈
📝 재복습weekly 데이터 사이언스 스쿨 퀴즈
인셉션 (Excepion) 클래스를 상속한다.try ~ except 로 감싼다.try ~ except ~ else로 마무리 한다.실습_01
사용자로 부터 숫자 5개를 입력 받을때, 숫자가 아닌 자료형이 입력되면 예외처리하는 프로그램을 만들어 보자.
# 예외가 발생 할 것 같은 구문
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생!!')
continue
nums.append(num)
n += 1
print(f'nums: {nums}')
# 예외가 발생하지 않은 경우 실행하는 경우
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생!!')
continue
else:
if num % 2 == 0:
nums.append(num)
n += 1
else:
print('입력한 숫자는 홀수 입니다.', end='')
print('다시 입력 하세요.')
continue
print(f'nums: {nums}')
예시
try:
inputData = input('input number: ')
numInt = int(inputData)
except:
print('excception raise!!')
print('not number!!')
else:
if numInt % 2 == 0:
print('even number!!')
else:
print('odd number')
finally:
print(f'putData: {inputData}')
실습_02
사용자로부터 숫자 5개를 입력받아 짝수, 홀수, 실수와 입력한 모든 데이터를 각각 출력하는 프로그램을 만들어보자.
evenList = []; oddList = []; floatList = []; dataList = []
n = 1
while n < 6:
try:
data = input('input number:')
floatNum = float(data)
except:
print('exception raise!!')
print('not number!!')
continue
else:
if floatNum - int(floatNum) != 0: # 실수
print('float number!!')
floatList.append(int(floatNum))
else:
if floatNum % 2 == 0: # 짝수
print('even number!!')
evenList.append(int(floatNum)
else: # 홀수
print('odd number!!')
oddList.append(floatNum)
n += 1
finally:
dataList.append(data)
print(f'evenList: {evenList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
print(f'dataList: {dataList}')
사용자 Exception (인셉션) 클래스를 만들 수 있다예시
num1 = int(input('input number1:'))
num2 = int(input('input number2:'))
try:
print(f'num1 / num2 = {num1 / num2}')
except :
print('0으로 나눌 수 없습니다.')
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')
num1 = int(input('input number1:'))
num2 = int(input('input number2:'))
try:
print(f'num1 / num2 = {num1 / num2}')
except Exception as e:
print('0으로 나눌 수 없습니다.')
print(f'exception: {e}')
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')
raise 키워드를 이용하면 강제로 예외를 발생시킬 수 있다예시
def divcalculator(n1, n2):
if n2 != 0:
print(f'{n1} / {n2} = {n1 / n2}')
else:
raise Exception('0으로 나눌 수 없습니다.')
num1 = int(input('input number1:'))
num2 = int(input('input number2:'))
divcalculator(num1, num2)
def divcalculator(n1, n2):
if n2 != 0:
print(f'{n1} / {n2} = {n1 / n2}')
else:
raise Exception('0으로 나눌 수 없습니다.')
num1 = int(input('input number1:'))
num2 = int(input('input number2:'))
try:
divcalculator(num1, num2)
except Exception as e:
print(f'Exception: {e}')
실습_03
사용자가 문자메세지를 보낼대 10글자 이하면 SMS로 발송하고, 10글자를 초과하면 MMS로 발송하는 프로그램을 예외 처리를 이용해서 만들어 보자.
def sendSMS(msg):
if len(msg) > 10:
raise Exception('길이초과!! MMS전환 후 발송!!', 1)
else:
print('SMS 발송!!')
def sendMMS(msg):
if len(msg) <= 10:
raise Exception('길이 미달!! SMS전환 후 발송!!', 2)
else:
print('MMS 발송!!')
msg = input('input message: ')
try:
sendSMS(msg)
except Exception as e:
print(f'e: {e.args[0]}')
print(f'e: {e.args[1]}')
if e.args[1] == 1:
sendMMS(msg)
elif e.args[1] == 2:
sendSMS(msg)
# 쓰기모드 : write() / W
- 기존의 문자는 없애고, 새로운 문자로 대치한다.
- 해당하는 파일이 없으면 새로 생성, 있으면 열린다.
file = open('c:pythonTxt/test.txt', 'w')
strCcnt = file.write('Hello world!')
print(f'strCnt: {strCnt}')
fille.close()
# 읽기모드 : read() 읽기 / R
- 숫자로 읽던 문자로 읽던 무조건 문자열로 불러온다.
file = open('c:pythonTxt/test.txt', 'r')
strCcnt = file.read()
print(f'str: {str}')
fille.close()
실습_04
다음과 같이 시스템 시간과 일정을 텍스트 파일에 작성해보자.
import time
lt = time.localtime()
# dateStr = '[' + str(lt.tm_year) + '년' + \
# str(lt.tm_mon) + '월' + str(lt.tm_mday) + '일]'
dateStr = '[' + time.strftime('%Y-%m-%d %I:%M:%S %p') + ']'
todaySchedule = input('오늘 일정: ')
file = open('C:/pythonTxt/test.txt', 'w')
file.write(dateStr + todaySchedule)
file.close()
실습_05
file = open('C:/pythonTxt/about_python.txt', 'r', encoding='UTF8')
str = file.read()
print(f'str: {str})
file.close()
str = str.replace('Python', '파이썬', 2) # 영문을 한글로 바꿈: 총 3개의 영문에서 2개만 바꾼다.
print(f'str: {str})
file = open('C:/pythonTxt/about_python.txt', 'w')
file.write(str)
file.close()
파일 모드는 파일을 어떤 목적으로 open할지 정한다
실습_06
uri ='C:/pythonTxt/'
def writePrimeNumber(n):
file = open(uri + 'prime_number.txt', "a")
file.write(str(n))
file.write('\n')
file.close()
inputNumber = int(input('0보다 큰 정수 입력: '))
for number in range(2, (inputNumber + 1)):
flag = True
for n in range(2, number):
if number % n == 0:
flag = False
break
if (flag):
writePrimeNumber(number)
file.close()라는 구문이 없어도 자동으로 파일을 닫아준다.예시
uri = 'C:/pythonTxt/'
file = open(uri + '5_037.txt', 'a')
file.write('python study!!')
file.close()
file = open(uri + '5_037.txt', 'r')
print(file.read())
file.close()
uri = 'C:/pythonTxt/'
with.open(uri + '5_037.txt', 'a') as f:
f.write('python study!!')
with.open(uri + '5_037.txt', 'r') as f:
print(f.read())
실습_07
로또번호 생성기 프로그램을 만들고 파일에 번호를 출력해보자.
import random
uri = 'C:/pythonTxt/'
def writeNumber(nums):
for idx, num in enumerate(nums):
with open(uri + 'lotto.txt', 'a') as f:
if idx < (len(nums) - 2):
f.write(str(nums) + ', ')
elif idx == (len(nums) - 2):
f.write(str(num))
elif idx == (len(nums) - 1):
f.write('\n')
f.write('bonus: ' + str(num))
f.write('\n')
rNums = random.sample(range(1,46), 7)
print(f'rNums: {rNums}')
writeNumber(rNums)
리스트(list) 또는 튜플 데이터를 파일에 쓰기 위한 함수예시
languages = ['C/C++', 'java', 'c#', 'python', 'javascript']
uri = 'C:/pythonTxt/'
for item in languages:
with open(uri + 'languages.txt', 'a') as f:
f.write(item)
f.write('\n')
languages = ['C/C++', 'java', 'c#', 'python', 'javascript']
uri = 'C:/pythonTxt/'
with open(uri + 'languages.txt', 'a') as f:
f.writelines(item + '\n' for item in languages) # 중요 _ 반복문을 사용
with open(uri + 'languages.txt', 'r') as f:
print(f.read()) # 콘솔창에서 읽기
실습_08
딕셔너리에 저장된 과목별 점수를 파일에 저장하는 코드를 작성하자.
uri = 'C:/pythonTxt/'
scoreDic = {'kor': 85, 'eng': 90, 'mat':92, 'sci': 79, 'his': 82}
for key in scoreDic.keys():
with open(uri + 'scoreDic.txt', 'a') as f:
f.write(key + '\t: ' + str(scoreDic[key]) + '\n')
print(scoreDic, file=f) # 입력된 리스트 통째로 가져오는 코드
readlines()
파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.
readline()
한 행을 읽어서 문자열로 반환한다.
와 진짜 거짓말 안하고 5번은 본 것 같은 왜케 구조가 헷갈리는지 모르겟다.
더 천천히 쪼개 봐야하나보다.
아니면 아직 내가 아파서 약먹고 몽롱해서 머리에 안들어오는 것일지도...
교수님 정말로 꼼꼼히 설명해주시는것 같은데 머리에 안들어와 ㅠㅠ