Python_Intermediate _5

최정민·2024년 7월 31일

Python_Middle

목록 보기
4/4

수강항목

  1. 예외처리
  2. 텍스트

1.예외처리

  • 예외란, 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제

    [출처이미지]제로베이스 데이터 취업스클

파이썬

○ ZeroDivisionErro

def add(n1,n2):
    print(n1+n2)

def div(n1,n2):
    print(n1/n2)

fn = int(input("input firstNum : "))
sn = int(input("input secontNum : "))

add(fn ,sn)
div(fn,sn)

입력값이 0일 경우

○ ValueError

print(int("hello"))

입력값이 데이터 타입이 안맞을 경우

○IndexError

list1 = [2,3,4,6,7]
print(list1[6])

인덱스에 맞지 않게 출력 할 경우

try~except~else

  • ~else는 예외가 발생하지 않은 경우 실행하는 구문이다.
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}")
  1. 정수가 아닌 다른 타입에 데이터가 입력이 되면 Value에러가 발생하게 된다.
  2. try 구간에서 에러가 안나고 정상적으로 진행 하고 except이 안된다면 else 부분이 실행된다.

finally

  • 예외 발생과 상관없이 항상 실행된다.
try:
    inputData = input("input number :")
    numInt = int(inputData)
except:
    print("exception raise !!")
    print("not number")
    numInt = 0
else:
    if numInt % 2 ==0:
        print("inputData is even number!!")
    else:
        print("inputData is odd number")
finally:
    print(f"inputData : {inputData}")
  1. finally는 항상 실행 된다.

raise

def divCalculatior(n1,n2):

    if n2 != 0:
        print(f"{n1}/ {n2} = {n1 / n2}")
    else:
        raise Exception("0으로 나눌 수 없습니다.")


num1 = int(input("input num1 : "))
num2 = int(input("input num2 : "))

# try:
divCalculatior(num1 , num2)
# except Exception as e:
print(f"Exception : {e}")

  1. raise Exception()으로 에러가 나올 떄 문구를 출력 하게 만들어준다. (에러생성)
  2. 해당 에러를 예외처리하기 위해서 try ~ except 을 사용한다.
  3. 해당 에러에 출력을 보기위해 except Exception as e: 로 하여 출력해준다.

2. 텍스트

텍스트 쓰기

import time

lt = time.localtime()
dateStr = '[' + str(lt.tm_year) + '년 ' + \
    str(lt.tm_mon) + "월 " +\
    str(lt.tm_mday) + "일"

todaySchedule = input("오늘 일정")

file = open("C:/PythonEX/PythonText/test2.txt", 'w')
file.write(dateStr + todaySchedule)
file.close()

텍스트 읽기

file = open("C:/PythonEX/PythonText/test2.txt", 'r')

str = file.read()
print(f"str : {str}")

file.close()

파일에 텍스트 변경 옵션

  • replace('변경 하기 전', '변경 할 단어', 몇번 째까지 할지 숫자입력)
file = open('C:/pythonTxt/about_python.txt', 'r')

str = file.read()
print(f'str: {str}')

file.close()

# str = str.replace('Python', '파이썬')
str = str.replace('Python', '파이썬', 2)
print(f'str: {str}')

file = open('C:/pythonTxt/about_python.txt', 'w')

strCnt = file.write(str)

file.close()

텍스트 파일 열기

uri = 'C:/PythonEX/PythonText/'

# 'w' 파일 모드
file = open(uri + 'hello.txt', 'w')

strCnt = file.write('Hello world!!')
print(f'strCnt: {strCnt}')

file.close()

file = open(uri + 'hello.txt', 'w')

strCnt = file.write('Hello Python!!')
print(f'strCnt: {strCnt}')

file.close()
# 'a' 파일 모드
file = open(uri + 'hello.txt', 'a')

file.write('\n')
file.write('Hello data science!!')

file.close()
# 'x' 파일 모드
file = open(uri + 'hello.txt', 'x')

file.write('Nice to meet you!!')

file.close()
# 'r' 파일 모드
file = open(uri + 'hello.txt', 'r')

str = file.read()
print(f'str: {str}')

file.close()
uri = 'C:/PythonEX/PythonText/'

def writePrimeNumber(n):
    file = open(uri + 'prime_numbers.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)
profile
데이터분석공부중

0개의 댓글