320x100
미리 말하자면 내 기억으론 12장 부턴 설명이 매우 빈약하고
13장인 예외 처리의 후반부에서는 굳이 이걸 이렇게 했어야 했나?
활용 예시가 적절하지 않은것같은데; 라는 생각이 들게끔하는 욕나오는 책임을 다시한번 밝힌다.
# 13. 예외 처리
'''
money = 1$+2$
prant(money)
'''
'''
str = "78점"
score = int(str)
print(score)
print("작업완료")
'''
# 위의 2개 케이스는 에러가 생기는 상황이다.
'''
try:
실행할 명령
except 예외 as 변수:
오류 처리문
else:
예외가 발생하지 않을 때의 처리
'''
'''
str = "89점"
try:
score = int(str)
print(score)
except:
print("예외가 발생했습니다.")
print("작업완료")
'''
'''
while True:
str = input("점수를 입력하세요: ")
try:
score = int(str)
print("입력한 점수 : ",score)
break
except:
print("점수 형식이 잘못 되었습니다.")
print("작업완료")
'''
'''
# 베낀 코드 첫번째
while True:
str = input("점수를 입력하세요")
try:
score=int(str)
print("입력한 점수:",score)
break
except:
print("점수 형식이 잘못 되었습니다.") # 잘못된 값이 입력되었을때 다시 try로 간다.
print("작업완료")
'''
'''
# 배낀 코드 2번째 작성
while True:
str = input("점수입력해봐: ")
try:
score =int(str)
print("입력한 함수",score)
break
except:
print("잘못된 값입니다.")
'''
'''
# 안보고 시도해본 코드 - 성공
while True:
num = input("점수입력해봐: ")
try:
score =int(num)
print("점수는",score)
break
except:
print("틀렸음 다시 입력해봐")
'''
'''
str="89"
try:
score =int(str)
print(score)
a = str[5] # 이부분이 특히 흥미롭다. 안에 2자리 수밖에 없는데 5자리 숫자면 에러나지 않나?
except ValueError:
print("점수의 형식이 잘못되었스비다.")
except IndexError:
print("첨자 범위를 벗어났습니다.")
print("작업완료")
# 이거는 try와 except ValueError가 같이 실행된것같은데;
'''
'''
str = "89점"
try:
score = int(str)
print(score)
a = str[5]
except ValueError as e:
print(e)
except IndexError as e:
print(e)
'''
'''
str = "90점"
try:
score = int(str)
print(score)
a = str[5] # 이거는 개뜬금없이 왜 설정해놨는지도 의미를 모르겠다.
except ValueError as e:
print(e)
except IndexError as e:
print(e)
# 이것에 대한 결과값이 invalid literal for int() with base 10: '90점' 가 나오는데 솔직히 모르겠다 왜 이런 결과가 나오는지
# 설명에서는 ValueError와 IndexError가 동일한 라인에 같이 사용될 수 있다고 했다.
# 그러나 역시나 기대를 저버리지 않고 안된다.
# 뭐 이거 보면 열폭하겠지 이건 저래서 다르고 저래서 다르다고
# 아니 그러면 그걸 책으로 설명해주던가 저자 당신 머릿속에만 알고있지 말고
'''
'''
# raise 명령
# raise 명령은 고의적으로 예외를 발생 시킨다.
def calcsum(n):
if n<0:
raise ValueError
sum = 0
for i in range(n+1):
sum +=i
return sum
try:
print("~10 = ",calcsum(10))
print("~~5 = ", calcsum(-5))
except ValueError:
print("입력값이 잘못되었습니다.")
# 다행히 이건 설명이 그지같아도 본래 알고있던 개념의 집합이기 때문에 이해가 모두 된다.
'''
'''
# 배껴서 시도한 코드 첫번째
def cal(n):
if n<0:
raise ValueError
sum = 0
for i in range(n+1):
sum+=i
return sum
try:
print("10까지 숫자",cal(10))
print("-5까지의 숫자",cal(-5))
except ValueError:
print("입력값이 잘못 되었습니다.")
'''
'''
# 직접 시도해본 코드 첫번째 - 성공
def cal(n):
if n<0:
raise ValueError
sum=0
for i in range(n+1):
sum+=i
return sum
try:
print("10까지의 숫자의 합: ",cal(10))
print("-5까지의 숫자의 합: ",cal(-5))
except:
print("값이 오류입니다.")
'''
'''
# 해설코드
def calcsum(n):
if n<0:
return -1
sum=0
for i in range(n+1):
sum +=i
return sum
result = calcsum(10)
if result == -1:
print("입력값이 잘못 되었습니다.")
else:
print("10까지 =",result)
result = calcsum(-5)
if result == -1:
print("입력값이 잘못되었습니다.")
else:
print("10까지 = "result)
'''
'''
# 카피코드
def cal(n):
if n<0:
return -1 # 이게 무슨 의미가 있나?
sum = 0
for i in range(n+1):
sum += i
return sum
result = cal(10)
if result ==-1:
print("입력값이 잘못 되었습니다.")
else:
print("10까지",result)
result = cal(-5)
if result == -1:
print("입력값이 잘못되었습니다.")
else:
print("10=",result)
'''
'''
# 의미를 모르겠다.
# 전체적으로 사전에 girl이 없으니깐 처음엔 없다고 출력되는건데
# 두번째꺼는 추가후 출력도 아니고
# 뭔 짓을 하는지 별로 알고싶지도 않고 이상하다.
dic = {"boy":"소년","school":"학교","book":"책"}
try:
print(dic["girl"])
except:
print("찾는 단어가 없습니다.")
han = dic.get("girl")
if han==None:
print("찾는 단어가 없습니다.")
else:
print(han)
'''
# 자원정리
# finally
try:
print("네트워크 접속")
# a =2 /0 # 0으로 2는 왜나눠; 그리고 이건 왜있는거야 졸라 이해안가네 무쓸모한것같은데 수식의 배열상
print("네트워크 통신수행")
finally:
print("접속 해제")
print("작업완료")
# 진짜로 이책 짜증난다
# 뭐 ㅅㅂ 되지도 않는걸 된다고 검수한하나?
# 아 씌벌 진짜 욕나오네
# 중간에 a = 2/0를 지우라고 해서 지웠더니 오류는 없다. 근데 어차피 프린트 4번되는거면 굳이 try, finally를 쓸 필요가 있나?
# 생각을 하면서 만들걸까? 아니면 만들다보니깐 중간부터 지쳐서 그냥 튀어나오는대로 만든걸까 싶다.
# 하... 진짜
300x250
'개발일지 > Python' 카테고리의 다른 글
2022.02.09 파이썬정복 15장-1 클래스 (0) | 2022.02.09 |
---|---|
2022.02.09 파이썬 정복 14강 파일 (데이터베이스ㅄㄳ) (0) | 2022.02.09 |
2022.02.08 ㅈ같지만 다시시작 파이썬 모듈 (0) | 2022.02.08 |
2022.02.07 파이썬 시간복잡, 공간복잡 에 대한 수학의 중요성. (0) | 2022.02.07 |
2022.02.07 파이썬정복 12장 표준 모듈 ft. 책버림 (0) | 2022.02.07 |