-먼저 같은 폴더 내 파일 넣기
with open('파일명.파일형식', 'r') as f: # 파일을 f라는 변수에 저장
with open('폴더명/파일명.파일형식', 'r') as f: # 다른 폴더에 있는 것 읽는 경우
# 예시
with open('chicken.txt', 'r') as f:
with open('data/chicken.txt', 'r') as f: # 경로기재
print(type(f))
for line in f:
print(line)
<class '_io.TextIOWrapper'> # 리스트는 아니지만 for문 쓰면 리스트와 비슷하게 사용가능
1일 : 575000 # f에 저장된 값이 리스트와 비슷하게 순차적으로 출력됨
# 텍스트 파일 내 엔터가 있기때문에 \n이 되어 빈줄 생성됨
2일 : 548000
3일 : 485300
.
.
.
: 텍스트 파일 화이트 스페이스→(“ ”, “\t”, “\n” 등) 없애는 방법
print(" abc def ".strip())
print(" \t \n abc def \n\n\n ".strip())
abc def # 중간 스페이스는 안사라지고 남아있다.
abc def
with open('파일명.파일형식', 'r') as f: # 파일을 f라는 변수에 저장
with open('폴더명/파일명.파일형식', 'r') as f: # 다른 폴더에 있는 것 읽는경우
# 예시
with open('chicken.txt', 'r') as f:
with open('data/chicken.txt', 'r') as f: # 경로기재
print(type(f))
for line in f:
print(line.strip())
1일 : 575000
2일 : 548000
3일 : 485300
: 지정한 파라미터를 기준으로 문자열을 나누는 것
# 예시 1
my_string = "1. 2. 3. 4. 5. 6"
print(my_string.split(".") # .을 기준으로 문자열 나누기
print(my_string.split(". ")
# 예시 2 (인덱싱)
full_name = "Kim, Yuna"
name_data = full_name.split(", ")
last_name = name_data[0]
first_name = name_data[1]
print(first_name, last_name)
# 예시 3 split으로 화이트 스페이스 모두 지우고 싶은 경우
print(" \n\n 2 \t \n 5 7 \n".split())
# split에 아무것도 지정 안해주면 됩니다
['1', ' 2', ' 3', ' 4', ' 5', ' 6'] # 숫자 앞에 공백 있음
['1', '2', '3', '4', '5', '6']
Yuna Kim
['2', '3', '5', '7']
with open('data/chicken.txt', 'r') as f:
total_revenue = 0
total_days = 0
for line in f:
data = line.strip().split(": ")
revenue = int(data[1]) # 그날의 매출
total_revenue += revenue
total_days += 1
print(total_revenue / total_days)
501916.12903225806
with open('new_file.txt', 'w') as f: # w는 여러번 실행시 덮어씌워짐
f.write("Hello world!")
f.write("My name is ash.")
f.write("Hello world!"\n)
f.write("My name is ash."\n)
# 파일 내
Hello world!My name is ash.
Hello world!
My name is ash.
with open('new_file.txt', 'a') as f: # a는 영어단어 append(추가)
f.write("Hello world!")
f.write("My name is ash.")
Hello world!
My name is ash.
Hello world!
My name is ash. # 빈 파일에서 두번 실행한 경우
*파일이 없어도 w대신 a 사용가능. 맨 처음에는 파일 만들어줌 r
with open('vocabulary.txt', 'w') as f:
while True:
english_word = input('영어 단어를 입력하세요: ')
if english_word == 'q':
break
korean_word = input('한국어 뜻을 입력하세요: ')
if korean_word == 'q':
break
f.write('{}: {}\n'.format(english_word, korean_word))
while True → break 나올 때까지 무한반복!
type 잘 생각하고 적기, 단순하게 어떤 조건 필요한지 계속 생각해보기(어떤 기능 활용해야 할지 연결), 코드 순서 중요하게 생각!
<생각>
1. -> 단어만 순서대로 출력되도록 하기 for문 사용
2. 단어 : input으로 입력 하게 만들기
3. 정답일 경우 -> 출력"맞았습니다"
4. 오답 -> 출력"아쉽습니다. 정답은 {}입니다.
정답만 확인되도록 추가
-어려운 점 : 어디다가 위치 넣어야할 지 어렵 .. 순서랑 for문 안, 밖? 등
+ for 이랑 인덱스 함께 쓰는 거 개념 다시 정리 헷갈려서 복습
<답안>
with open('vocabulary.txt', 'r') as f:
for line in f:
data = line.strip().split(': ')
kor_word = data[0]
eng_word = data[1]
answer = input("{}:".format(kor_word))
if answer == eng_word:
print("맞았습니다!")
else:
print("아쉽습니다. 정답은 {}입니다.".format(eng_word))
<생각>
Q.random 모듈, dictionary 이용해서 단어들 랜덤한 순서로 내도록 업그레이드하기.
(같은 단어 여러번 물어봐도 괜찮고 q를 입력할 때까지 계속실행_
1.단어 모음 -> dictionary로 만들기
사전 생성후 data 저장하기
2.random사용해서 단어 랜덤하게 나오도록 만들기(random은 숫자로 알고있는데 일단 찾기)
*random **리스트** 데이터를 활용하는 모듈의 몇가지 함수
-choice(): 리스트의 요소 중 랜덤해서 리턴
-shuffle(): 리스트의 요소 순서를 무작위로 섞음
-sample(): 리스트의 함수 중 n개를 랜덤으로 추출하여 새로운 리스트로 변환. 원본은 유지
? 근데 그러면 왜 다시 사전에서 리스트로 바꾸는 건진 모르겠다
-->문자 자체를 랜덤으로 뽑는 것으로 써봣는데 계속 답이 바뀌고 안됨
--> 숫자로 인덱싱해서 나머지 답연결해서 쓰는 방법으로 변경
<모범 답안>
import random
# 사전 만들기
vocab = {}
with open('vocabulary.txt', 'r') as f:
for line in f:
data = line.strip().split(": ")
english_word, korean_word = data[0], data[1]
vocab[english_word] = korean_word
# 목록 가져오기
keys = list(vocab.keys())
# 문제 내기
while True:
# 랜덤한 문제 받아오기
index = random.randint(0, len(keys) - 1)
english_word = keys[index]
korean_word = vocab[english_word]
# 유저 입력값 받기
guess = input("{}: ".format(korean_word))
# 프로그램 끝내기
if guess == 'q':
break
# 정답 확인하기
if guess == english_word:
print("정답입니다!\n")
else:
print("아쉽습니다. 정답은 {}입니다.\n".format(english_word))