7일차 스터디노트 / 파이썬 텍스트 파일 쓰기, 읽기, 함수 연습문제 풀이/제로베이스 데이터 취업스쿨
📗 7일차 공부 내용 요약
[ 파이썬 ]
1. 텍스트 파일 다루기 : 텍스트 파일을 쓰고, 읽는 등 다양하게 다루는 방법을 알아보았다.
2. 함수 연습문제 풀이 : 함수와 관련된 연습문제를 풀었다.
📖 7일차 공부 내용 자세히
1. 텍스트 파일
■ 텍스트 파일 쓰기
write( )함수
- 파일이 없으면 파일을 새로 성성하고, 파일이 있으면 그 파일을 오픈하게 된다
- 기존에 있는 글을 모두 지우고 새로운 글로 덮어버린다
file = open('C:/pythonTxt/test.txt.','w')
file.write('Hello World')
file.close()
■ 텍스트 파일 읽기
read( )함수
file = open('C:/pythonTxt/test.txt.','r')
file.read()
file.close()
■ 텍스트 파일 열기 모드
- 'w' : 쓰기 전용 → 파일이 있으면 덮어씌움
- 'a' : 쓰기 전용 → 파일이 있으면 덧붙임
- 'x' : 쓰기 전용 → 파일이 있으면 에러 발생
- 'r' : 읽기 전용 → 파일이 없으면 에러 발생
uri = 'C:/pythonTxt/'
# 'w' 파일 모드
file = open(uri + 'hello.txt','w')
file.write('Hello Python!')
file.close()
#'a' 파일 모드
file = open(uri + 'hello.txt','a')
file.write('\nNice to Meet You!')
file.close()
#'x' 파일 모드
# file = open(uri + 'hello.txt','x') #에러 발생
# file.close()
# file = open(uri + 'hello_01.txt','x')
# file.write('Hello World!')
# file.close()
#'r' 파일 모드
file = open(uri + 'hello_01.txt','r')
print(file.read())
file.close()
■ close() 닫기 생략
with ~ as 문
with~as문을 이용하면 파일 닫기(close)를 생략할 수 있다
#로또 번호 생성기 프로그램을 만들고 파일에 번호를 출력해보자
import random
uri = 'C:/pythonTxt/'
def writeNUmbers(nums):
for idx, num in enumerate(nums): #로또 번호 7개를 순차적으로 입력하기 위한 for문
with open(uri + 'lotto.txt','a') as f:
if idx < (len(nums)-2): #5번째 숫자까지는 , 찍기
f.write(str(num) + ',')
elif idx == (len(nums)-2): #6번째 숫자 뒤에는 , 안찍기
f.write(str(num))
elif idx == (len(nums)-1): #7번째 숫자 보너스 번호로 출력
f.write('\n')
f.write('bonus: '+str(num))
f.write('\n')
rNums = random.sample(range(1,46),7) #로또 번호 7개 뽑기
print(f'rNUms: {rNums}')
writeNUmbers(rNums)
💡 위 예제를 작성하면서, list 자료형의 count 함수를 알아보고, 기록해보았다
[파이썬] list 자료형 / 리스트 값 찾기( count )
📌 List 값 찾기 리스트명 . count ( 찾고자 하는 값) count() 함수를 활용한다 찾고자 하는 값의 갯수를 반환하고, 존재하지 않으면 0을 반환한다 odd = [ 1, 3, 5, 7, 9 ] count = list.count(4) print(count) #0
kim-dem-dem.tistory.com
■ 리스트, 튜플 데이터 파일에 쓰기
writelines()
writelines()를 통해 리스트, 튜플데이터를 파일에 편리하게 쓸 수 있다
languages = ('c++', 'java', 'python')
uri = 'C:/pythonTxt/'
with open(uri + 'languages.txt','w') as f:
f.writelines(item + '\n' for item in languages)
with open(uri + 'languages.txt','r')as f:
print(f.read())
languages = ('c++', 'java', 'python')
uri = 'C:/pythonTxt/'
with open(uri + 'languages.txt','w') as f:
f.writelines(item + '\n' for item in languages)
with open(uri + 'languages.txt','r')as f:
print(f.read())
💡 위 예제를 작성하면서, 딕셔너리 자료형을 알아보고, 기록해보았다
[파이썬] 딕셔너리 자료형
📌 딕셔너리 자료형? scores = {'국어':89, '영어':98, '수학':94} 딕셔너리는 key와 value를 한 쌍으로 갖는 자료형 위 코드에서 key는 ‘국어’, ‘영어’, ‘수학’이고 value는 89. 98, 94이다 print(scores['국
kim-dem-dem.tistory.com
■ 파일의 데이터 읽고 리스트/문자열 반환
redlines( ) , readline( )
#파일에 저장된 과목별 점수를 파이썬에서 읽어, 딕셔너리에 저장하는 코드를 만들어보자
uri = 'C:/pythonTxt/'
scoreDic = {}
with open(uri + 'score.txt','r') as f:
line = f.readline()
while line != '':
tempList = line.split(':') #콜론 내 구분자를 중심으로 문자를 분리한다
scoreDic[tempList[0]] = int(tempList[1].strip('\n'))
#딕셔너리 키에 templist 인덱스 0의 값(과목명)을 value에 1의값(점수)입력(strip을 통해 \n 삭제)
line = f.readline()
print(scoreDic)
💡 위 예제를 작성하면서, 문자열 자료형의 split(), strip() 함수를 알아보고, 기록해보았다
[파이썬] 문자열 자료형 / 문자열 나누기(split), 공백 지우기(strip)
📌 문자열 나누기 문자열 . split ( ) split() 함수를 활용한다 괄호 안의 값을 구분자로 하여, 구분자를 기준으로 문자열을 나눠준다 나눈 값들은 리스트에 순차적으로 들어간다 a = 'Happy New Year' spli
kim-dem-dem.tistory.com
2.함수 연습문제풀이
※ 기억에 남는 문제 위주로 기재해본다
Q. 재귀 함수를 이용해서 팩토리얼 함수를 만들어보자
def recursionFun(n):
if n == 1:
return n
return n * recursionFun(n-1)
inputNum = int(input('input number:'))
print(recursionFun(inputNum))
Q.단리/월복리 계산기 함수를 만들어보자
def formatedNumber(n):
return format(n,',')
#단리
def singleRateCalculator(m, t, r):
totalMoney = 0
totalRateMoney = 0
for i in range(t):
totalRateMoney += m * (r *0.01)
totalMoney = m + totalRateMoney
return int(totalMoney)
#월복리
def multiRateCalculator(m, t, r):
t = t*12
rpm = (r/12) * 0.01 #월 이율
totalMoney = m
for i in range(t):
totalMoney = totalMoney + totalMoney * rpm
return int(totalMoney)
money = int(input('예치금(원):'))
year = int(input('기간(년): '))
rate = int(input('연 이율(%): '))
print('[단리계산기]')
print('='*30)
print(f'예치금 : {formatedNumber(money)}원')
print(f'예치기간 : {year}년')
print(f'연 이율 : {rate}%')
print('-'*30)
print(f'{year}년 후 총 수령액 : {formatedNumber(singleRateCalculator(money,year,rate))}원')
print('='*30)
print()
print('[월복리계산기]')
print('='*30)
print(f'예치금 : {formatedNumber(money)}원')
print(f'예치기간 : {year}년')
print(f'연 이율 : {rate}%')
print('-'*30)
print(f'{year}년 후 총 수령액 : {formatedNumber(multiRateCalculator(money,year,rate))}원')
print('='*30)
➰ 7일차 후기
벌써 파이썬 중급 파트의 개념강의 파트까지 진도가 나갔다.
개념강의의 예제들과 함수 연습문제를 풀다보니 이전에 작성했던 코드들을 다시 활용해보는 순간들이 잦다.
일주일도 안되었지만 가물가물하다니, 매일매일 내 기억력을 테스트 하는 것 같다.
진도를 따라가느라 복습이 쉽지 않지만.. 오늘도 복습을 해야겠다는 다짐을 하며 마무리한다~
※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.