비전공개미 개발노트
python 3일차 - file write/read, try catch 예외처리 본문
반응형
SMALL
file write¶
In [5]:
file = open('test.txt', 'w') # 만들 파일명, w == write(쓰기)
In [6]:
file.write('안녕 파이썬 programing!!')
file.close() # write로 기입한 후에 반드시 close로 닫아줘야됨
file read¶
In [15]:
file_data = open('test.txt')
In [16]:
data = file_data.read()
data
Out[16]:
'안녕 파이썬 programing!!'
In [ ]:
file_data.close() # 정석대로면 close()를 사용하지만 read에서는 필수는 아님(오류x)
In [18]:
with open('test.txt', 'r') as f: # close() 안해줘도 됨
datas = f.read()
print(datas)
안녕 파이썬 programing!!
try catch 예외처리¶
In [22]:
try: # 문제가 없을시(원하는 값이 들어왔을때) try실행
number = int(input('정수 입력 > '))
print('원의 반지름 :', number)
print('원의 넓이 :', number * 3.141592)
except: # 문제가 있을시(원하지 않는 값이 들어왔을때) except실행
print('입력이 잘못 되었습니다')
정수 입력 > a
입력이 잘못 되었습니다
In [24]:
list_a = ['52', '273', '32', '스파이', '103']
mylist = []
for s in list_a:
try:
float(s) # '스파이'는 여기서 걸리고 except로 넘어간다
mylist.append(float(s))
except:
print(s, '는 숫자가 아닙니다')
pass
mylist
스파이 는 숫자가 아닙니다
Out[24]:
[52.0, 273.0, 32.0, 103.0]
In [31]:
## try일때 ----------------------
try:
number = int(input('정수입력 > '))
# print('이상 없습니다')
# print('원의 넓이 :', number * number * 3.141592) # 여기에 적어도 되고 else문에다 적어도 됨
except:
print('정수가 아닙니다') # try에서 팅겨져 나온후 except실행 후 else를 거치지 않고 종료
else: # 이상없을경우 try이후에 else로 넘어간다
print('이상 없습니다')
print('원의 넓이 :', number * number * 3.141592)
finally:
print('무조건 실행!')
print('프로그램 끝')
정수입력 > 20
이상 없습니다
원의 넓이 : 1256.6368
무조건 실행!
프로그램 끝
In [32]:
## except일때 ----------------------
try:
number = int(input('정수입력 > '))
# print('이상 없습니다')
# print('원의 넓이 :', number * number * 3.141592) # 여기에 적어도 되고 else문에다 적어도 됨
except:
print('정수가 아닙니다') # try에서 팅겨져 나온후 except실행 후 else를 거치지 않고 종료
else: # 이상없을경우 try이후에 else로 넘어간다
print('이상 없습니다')
print('원의 넓이 :', number * number * 3.141592)
finally:
print('무조건 실행!')
print('프로그램 끝')
정수입력 > aa
정수가 아닙니다
무조건 실행!
프로그램 끝
과제¶
In [33]:
# add라는 함수를 정의하고 함수에서 5와 10을 더한 결과를 출력하도록하라.
In [38]:
def add(num1, num2):
return num1 + num2
print(add(5, 10))
15
In [34]:
# add 함수의 인수가 숫자가 아닌 경우에 예외를 발생시킬 수 있기 때문에 그 경우는
# 0을 반환하라
In [41]:
try:
num1 = int(input('첫번째 숫자입력 > '))
num2 = int(input('두번째 숫자입력 > '))
print(add(num1, num2))
except:
print(0)
첫번째 숫자입력 > 5
두번째 숫자입력 > a
0
In [35]:
# 입력으로 들어오는 모든 수의 평균 값을 계산해 주는 함수를 작성하라.(가변인자 사용)
In [111]:
def sumOne(*val) :
one = []
for i in val:
num = int(input('정수입력 > '))
one.append(num)
result = sum(one)
result = result / len(one)
return result
re = sumOne('','','')
print('입력된 수의 평균값은', re)
정수입력 > 90
정수입력 > 80
정수입력 > 85
입력된 수의 평균값은 85.0
In [36]:
# 사용자의 입력을 파일(test.txt)에 저장하는 프로그램을 작성해 보자.
# (저장 문자열은 "java")
In [123]:
file = open('test.txt', 'w')
In [124]:
file.write('java')
file.close()
In [37]:
# 저장한 test.txt 파일의 내용 중 "java"라는 문자열을 "python"으로 바꾸어서
# 저장해 보자.
In [129]:
file = open('test.txt')
contents = file.read()
replaced_contents = contents.replace('java', 'python')
replaced_contents
### 변경이 되지 않는다!!!!!!!!!!!!!!! 어떻게 바꾸나 선생님의 설명을 들어보자
Out[129]:
'python'
풀이¶
In [130]:
# add라는 함수를 정의하고 함수에서 5와 10을 더한 결과를 출력하도록하라.
In [132]:
num1 = 5
num2 = 10
def add(n1, n2):
return n1 + n2
r = add(num1, num2)
r
Out[132]:
15
In [137]:
# calculator.py파일의 함수를 불러와서 실행
import calculator as cal
r = cal.add(num1, num2)
r
Out[137]:
15
In [133]:
# add 함수의 인수가 숫자가 아닌 경우에 예외를 발생시킬 수 있기 때문에 그 경우는
# 0을 반환하라
In [140]:
def addOne(n1, n2):
try:
return n1 + n2
except:
return 0
r = addOne(12, 34)
print(r)
r2 = addOne('a', 2)
print(r2)
46
0
In [134]:
# 입력으로 들어오는 모든 수의 평균 값을 계산해 주는 함수를 작성하라.(가변인자 사용)
In [143]:
def avg_numbers(*args):
result = 0 # 합계
for n in args:
result += n
return result / len(args)
print(avg_numbers(1, 2))
print(avg_numbers(1, 2, 3, 4, 5))
1.5
3.0
In [135]:
# 사용자의 입력을 파일(test1.txt)에 저장하는 프로그램을 작성해 보자.
# (저장 문자열은 "java")
In [145]:
user_input = input('저장할 내용을 입력하세요')
f = open('test1.txt','w') ## 덮어쓰기 주의!!!!!
f.write(user_input)
f.close()
저장할 내용을 입력하세요java python java
In [136]:
# 저장한 test1.txt 파일의 내용 중 "java"라는 문자열을 "python"으로
# 바꾸어서 저장해 보자.
In [148]:
# 파일읽기
f = open('test1.txt','r')
file_data = f.read() #file_data에 읽은 내용이 들어있음
f.close()
# 수정
file_data = file_data.replace('java','python')
# file_data # file_data 내용확인
# 파일쓰기
f = open('test1.txt','w')
f.write(file_data)
f.close()
추가과제 미리 풀어보기(계산기)¶
In [7]:
### 계산기
# 첫번째 수 입력
num1 = input('숫자입력 > ')
# 연산자(+, -, *, /)
num2 = input('연산자입력 > ')
# 두번째 수 입력
num3 = input('숫자입력 > ')
# 연산에 따라서 계산 -> 함수
def calc(n1, n2, n3):
total = 0
if n2 == '+':
total = int(n1) + int(n3)
elif n2 == '-':
total = int(n1) - int(n3)
elif n2 == '*':
total = int(n1) * int(n3)
elif n2 == '/':
total = int(n1) / int(n3)
else:
total = print('다시 정확하게 입력해 주세요')
return total
# 결과출력
re = calc(num1, num2, num3)
re
숫자입력 > 5
연산자입력 > *
숫자입력 > 5
Out[7]:
25
추가과제 풀이¶
In [8]:
### 계산기
number1 = 0; number2 = 0 # 소스코드 한줄로 작성시 세미콜론으로 구분
operator = ''
result = 0
# 첫번째 수 입력
number1 = int(input('첫번째 수 입력 > '))
# 연산자(+, -, *, /)
operator = input('연산자(+, -, *, /) 입력 > ')
# 두번째 수 입력
number2 = int(input('두번째 수 입력 > '))
# 연산에 따라서 계산 -> 함수
def process(n1, oper, n2):
re = 0
if oper == '+':
re = n1 + n2
elif oper == '-':
re = n1 - n2
elif oper == '*':
re = n1 * n2
elif oper == '/':
re = n1 / n2
return re
result = process(number1, operator, number2)
# 결과 출력
print(number1, operator, number2, '=', result)
첫번째 수 입력 > 5
연산자(+, -, *, /) 입력 > *
두번째 수 입력 > 5
5 * 5 = 25
python_language5.ipynb
0.02MB
반응형
LIST
'프로그래밍 > Python' 카테고리의 다른 글
python 4일차 - 가위바위보, UP&DOWN 게임만들기 (0) | 2022.09.01 |
---|---|
python 4일차 - math, random (0) | 2022.09.01 |
python 3일차 - 함수, 매개변수, 가변인자 (0) | 2022.08.31 |
python 3일차 - 람다(lambda)를 이용하여 줄여쓰기 (0) | 2022.08.31 |
python 2일차 - if문, for문, while문, enumerate (0) | 2022.08.30 |
Comments