🎉 berenickt 블로그에 온 걸 환영합니다. 🎉
Lang
python
07-입출력

1. 표준입력

1.1 input()

1
answer = input("아무 값이나 입력하세요 : ")
2
print("입력한 값은 " + answer + "입니다.")
3
4
print(type(answer))
5
6
answer = input("아무 값이나 입력하세요 : ")
7
print("입력한 값은 " + answer + "입니다.")
8
9
print(type(answer)) # <class 'str'>
10
print(type(int(answer))) # <class 'int'>
11
answer = 10
12
print(type(answer)) # <class 'int'>

1.2 sep

1
print("파이썬", "자바") # 파이썬 자바
2
print("파이썬" + "자바") # 파이썬자바
3
4
print("파이썬", "자바") # 파이썬 자바
5
6
# 값을 쉼표로 구분
7
print("파이썬", "자바", sep=",") # 파이썬,자바
8
9
print("파이썬", "자바", "자바스크립트") # 파이썬 자바 자바스크립트
10
11
# 값을 ' vs '로 구분
12
print("파이썬", "자바", "자바스크립트", sep=" vs ") # 파이썬 vs 자바 vs 자바스크립트

1.3 end

1
# end="? " : 문장의 끝 부분을 ? 로 뒷문장과 연결
2
print("파이썬", "자바", sep=", ", end="? ")
3
print("무엇이 더 재미있을까요?")
4
# 파이썬, 자바? 무엇이 더 재미있을까요?
5
6
print("파이썬", "자바", sep=", ") # 파이썬, 자바
7
print("무엇이 더 재미있을까요?") # 무엇이 더 재미있을까요?

1.4 stdout, stderr

1
import sys
2
3
print("파이썬", "자바", file=sys.stdout) # 파이썬 자바
4
print("파이썬", "자바", file=sys.stderr) # 파이썬 자바, 에러가 발생시 에러처리

1.5 ljust, rjust

1
scores = {"수학": 0, "영어": 50, "코딩": 100}
2
3
for subject, score in scores.items(): # (key, value)
4
print(subject, score)
5
"""위 코드의 실행결과
6
수학 0
7
영어 50
8
코딩 100
9
"""
10
11
""" 💡 ljust와 rjust
12
ljust(8) : 왼쪽으로 8칸 공간을 확보한 상태에서 왼쪽으로 정렬 후 출력
13
rjust(4) : 오른쪽으로 4칸 공간을 확보한 상태에서 오른쪽으로 정렬 후 출력
14
"""
15
scores = {"수학": 0, "영어": 50, "코딩": 100}
16
17
for subject, score in scores.items():
18
print(subject.ljust(8), str(score).rjust(4), sep=":")
19
"""위 코드의 실행결과
20
수학 : 0
21
영어 : 50
22
코딩 : 100
23
"""

1.6 zfill

1
for num in range(1, 21): # 1~20의 숫자
2
print("대기번호 : " + str(num))
3
"""
4
대기번호 : 1
5
대기번호 : 2
6
대기번호 : 3
7
...
8
대기번호 : 20
9
"""
10
11
"""zfill(3)
12
3칸 만들고, 값이 없는 빈 공간은 0을 채움
13
"""
14
15
for num in range(1, 21): # 1~20의 숫자
16
print("대기번호 : " + str(num).zfill(3))
17
18
"""
19
대기번호 : 001
20
대기번호 : 002
21
대기번호 : 003
22
...
23
대기번호 : 020
24
"""

2. 다양한 형식으로 출력 - format()

1
print("{0}".format(500)) # {0} 위치에 값 500 출력
2
3
print("{0}".format(500))
4
# 빈칸으로 두기, 오른쪽 정렬, 공간 10칸 확보
5
print("{0: >10}".format(500))
6
7
# 빈칸으로 두기, 오른쪽 정렬, + 기호 붙이기, 공간 10칸 확보
8
print("{0: >+10}".format(500))
9
print("{0: >+10}".format(-500)) # 음수일 때
10
11
print("{0:_<10}".format(500)) # 빈칸을 _로 채우기, 왼쪽 정렬, 공간 10칸 확보
12
13
print("{0:,}".format(100000000000)) # 3자리마다 쉼표 찍기
14
print("{0:+,}".format(100000000000)) # + 기호 붙이기, 3자리마다 쉼표 찍기
15
print("{0:+,}".format(-100000000000)) # 음수일 때, 3자리마다 쉼표 찍기
16
17
# 빈칸을 ^로 채우기, 왼쪽 정렬, + 기호 붙이기, 공간 30칸 확보, 3자리마다 쉼표 찍기
18
print("{0:^<+30,}".format(100000000000))
19
20
print("{0}".format(5 / 3))
21
22
print("{0:f}".format(5 / 3))
23
24
print("{0:.2f}".format(5 / 3)) # 소수점 이하 둘째 자리까지 출력

3. 파일 입출력

3.1 open-w-쓰기

1
score_file = open("score.txt", "w", encoding="utf8") # score.txt 파일을 쓰기 모드로 열기
2
print("수학 : 0", file=score_file) # score.txt 파일에 내용 쓰기
3
print("영어 : 50", file=score_file) # score.txt 파일에 내용 쓰기
4
score_file.close() # score.txt 파일 닫기

3.2 open-a-이어쓰기

1
score_file = open("score.txt", "a", encoding="utf8") # score.txt 파일에 이어 쓰기 모드로 열기
2
score_file.write("과학 : 80\n")
3
# write() 함수는 줄 바꿈이 없으므로 \n 추가
4
score_file.write("코딩 : 100\n")
5
score_file.close()

3.3 open-r-읽기

1
score_file = open("score.txt", "r", encoding="utf8") # score.txt 파일을 읽기 모드로 열기
2
print(score_file.read()) # 파일 전체 읽어 오기
3
score_file.close()
4
5
6
score_file = open("score.txt", "r", encoding="utf8")
7
8
while True:
9
line = score_file.readline()
10
if not line: # 더 이상 읽어 올 내용이 없을 때
11
break # 반복문 탈출
12
print(line, end="") # 읽어 온 내용 출력
13
14
score_file.close()
15
16
17
score_file = open("score.txt", "r", encoding="utf8")
18
lines = score_file.readlines() # 파일에서 모든 줄을 읽어와 리스트 형태로 저장
19
20
for line in lines: # lines에 내용이 있을 때까지
21
print(line, end="") # 읽어 온 내용 출력
22
23
score_file.close()
24
25
26
score_file = open("score.txt", "r", encoding="utf8") # score.txt 파일을 읽기 모드로 열기
27
print(score_file.readline(), end="") # 한 줄씩 읽어 오고 커서는 다음 줄로 이동
28
print(score_file.readline(), end="") # end 값을 설정해 줄 바꿈 중복 수행 방지
29
print(score_file.readline(), end="")
30
print(score_file.readline(), end="")
31
score_file.close()

4. 데이터를 파일로 저장-pickle모듈

1
import pickle # pickle 모듈 가져다 쓰기
2
3
profile_file = open("profile.pickle", "wb") # 바이너리 형태로 저장(wb)
4
profile = {"이름": "스누피", "나이": 30, "취미": ["축구", "골프", "코딩"]}
5
print(profile)
6
7
pickle.dump(profile, profile_file) # profile 데이터를 파일에 저장
8
profile_file.close() # 파일 닫기
9
10
profile_file = open("profile.pickle", "rb") # 읽어 올 때도 바이너리 형태 명시
11
profile = pickle.load(profile_file) # 파일에 있는 정보를 불러와서 profile에 저장
12
13
print(profile)
14
profile_file.close()

5. 파일 한번에 열고닫기 - with문

1
import pickle
2
3
with open("profile.pickle", "rb") as profile_file:
4
print(pickle.load(profile_file))
5
6
import pickle
7
8
with open("study.txt", "w", encoding="utf8") as study_file: # 새로운 파일 생성
9
study_file.write("파이썬을 열심히 공부하고 있어요.")
10
11
with open("study.txt", "r", encoding="utf8") as study_file:
12
print(study_file.read())

6. 퀴즈. 보고서 파일 만들기

1
"""
2
Quiz) 회사에서 매주 1회 작성해야 하는 보고서가 있습니다.
3
보고서는 항상 아래와 같은 형태로 출력되어야 합니다.
4
5
- x 주차 주간보고 -
6
부서 :
7
이름 :
8
업무 요약 :
9
10
1부차부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하시오.
11
12
조건 : 파일명은 '1주차.txt', '2주차.txt', ...와 같이 만듭니다.
13
"""
14
for i in range(1, 51): # 숫자 1~50
15
# 파일 열기
16
with open(str(i) + "주차.txt", "w", encoding="utf8") as report_file:
17
report_file.write("- {0}주차 주간보고 -".format(i))
18
report_file.write("\n부서 : ") # 줄 바꿈 처리
19
report_file.write("\n이름 : ")
20
report_file.write("\n업무 요약 : ")