- sep : 각 값의 사이 연산자 설정 가능, 기본 값은 띄어쓰기,
- end : print 종료 후 출력되는 연산자, 기본 값은 줄바꿈(Enter)
코 딩 | 결과 값 |
print("Python","Java") | Python Java |
print("Python","Java",sep = ',') | Python,Java |
print("Python","Java",sep = ' vs ') | Python vs Java |
print("Python","Java","JavaScript", sep = ' vs ') | Python vs Java vs JavaScript |
print("Python","Java",sep = ',', end = "?") print("무엇이 더 재밌을까요?") |
Python,Java?무엇이 더 재밌을까요? # 기본 end 는 줄바꿈을 실행 |
# log 구분 생성
: 정상적인 log 와 error log를 구분하여 생성하여 Log 관리를 더욱 원활히 할 수 있다.
import sys
print("Python","Java",file = sys.stdout) # 정상 처리된 사항에 대한 Log
print("Python","Java",file = sys.stderr) # Error 관련 Log
# for 반복문으로 출력할 경우 정렬 방법
# 정렬 없이 일반적인 출력
scores = {"수학":0, "영어":50, "코딩":100}
for subject, score in scores.items(): # items() : Key 와 Value를 나타냄
print(subject, score)
결과 값 :
수학 0
영어 50
코딩 100
# ljust(왼쪽 정렬), rjust (오른쪽정렬) 및 자릿수 확보
scores = {"수학":0, "영어":50, "코딩":100}
for subject, score in scores.items(): # items() : Key 와 Value를 나타냄
print(subject.ljust(8), str(score).rjust(4) , sep = ":") # sep로 출력물이 더욱 깔끔하게 정리가능
결과 값 :
수학 : 0
영어 : 50
코딩 : 100
# 은행 대기 순번표 처럼 순서대로 출력( 001, 002, 003 ~ 020)
for num in range(1,21):
print("대기번호 : " + str(num))
결과 값 :
대기번호 : 1
대기번호 : 2
대기번호 : 3
.... (생략)
대기번호 : 20
# zfill : 원하는 자릿수 만큼 표시하고 빈칸을 0으로 채움
for num in range(1,21):
print("대기번호 : " + str(num).zfill(3)) # 3자리를 확보하고, 빈칸을 0으로 채움
결과 값 :
대기번호 : 001
대기번호 : 002
대기번호 : 003
.... (생략)
대기번호 : 020
# input 으로 변수를 받을 경우, 모든 DATA는 str 형식으로 처리된다.
# Case 1.
answer = input("아무 값이나 입력하세요 : ")
print("입력하신 값은 " + answer + "입니다.")
print(type(answer)) # 10 입력 시, 결과 값 : <class 'str'>
print(type(answer)) # 문자 입력 시, 결과 값 : <class 'str'>
#Case 2.
answer = 10
print("입력하신 값은 {0} 입니다.". format(answer))
print(type(answer)) # 10 입력 시, 결과 값 : <class 'int'>
# 사용자 입력을 통해(input) 받게되면 해당 값은 str 로 입력 받음
# 빈 자리는 빈공간으로 두고, 오른쪽 정렬을 하되, 총 10자리 공간을 확보 | |
print("{0: >10}".format(500)) | 500 |
print("{0: >10}".format(-500)) | -500 |
# 양수일 때는 +로 표시, 음수일 때는 -로 표시 | |
print("{0: >+10}".format(500)) | +500 |
print("{0: >+10}".format(-500)) | -500 |
print("{0: >-10}".format(500)) | 500 |
print("{0: >-10}".format(-500)) | -500 |
#왼쪽 정렬을 하고, 빈칸으로 _ 로 채움 | |
print("{0:_<10}".format(500)) | 500_______ |
#3자리 마다 콤마를 찍어주기 | |
print("{0:,}".format(10000000)) | 10,000,000 |
#3자리 마다 콤마를 찍어주기, +-부호도 붙이기 | |
print("{0:+,}".format(10000000)) | +10,000,000 |
print("{0:+,}".format(-10000000)) | -10,000,000 |
# 3자리 마다 콤마를 찍어주기, 부호도 붙이고, 자릿수도 확보하기 # 빈자리는 ^로 채워주세요 |
|
print("{0:^<+30,}".format(10000000)) | +10,000,000^^^^^^^^^^^^^^^^^^^ |
# 소수점 출력 | |
print("{0:f}".format(5/3)) | 1.666667 |
# 자릿수 소수점 아래2자리 까지 | |
print("{0:.2f}".format(5/3)) | 1.67 |
# 강의 중 의문 사항이 들어, 부호에 - 표시를 해봤으나, 생략되었을 때와 결과가 같았다.
print("{0: >-10}".format(500)) 의 결과 값 : 500 / print("{0: >10}".format(500)) 의 결과 값 : 500
print("{0: >-10}".format(-500)) 의 결과 값 : -500 / print("{0: >10}".format(-500)) 의 결과 값 : -500
# 입력 방법 1. (print)
- oepn 으로 파일을 열고 난 후 작업 완료시에는 close() 까지 완료 할 것.
- w : write (overwrite)
- print 문으로 내용 생성
score_file = open("score.txt","w",encoding="utf8")
# open("file name", "w : 쓰기(덮어쓰기)", "endcoding ="utf8" - 한글 정상적으로 인식)
print("수학 : 0", file = score_file)
print("영어 : 50", file = score_file)
score_file.close()
# 입력 방법 2. ( .write)
- oepn 으로 파일을 열고 난 후 작업 완료시에는 close() 까지 완료 할 것.
- 변수명.write 로 해당 내용 입력, print와 달리 줄바꿈이 없으므로 탈출문자(\n) 이용하여 줄바꿈
- a : append(내용 추가) , 기존에 score 파일이 없을 때, a 로 설정하면 신규 파일 생성하며 내용 작성.
score_file = open("score.txt","a",encoding="utf8") # a - append 추가
score_file.write("과학 : 80") # write 구문으로도 입력 가능
score_file.write("\n코딩 : 100") # print 와 달리 줄바뀜이 생기지 않으므로 탈출문자로 구분
score_file.close()
# 출력 방법 1( .read) : 전체를 한번에 불러오기
- r : read
- source_file.read() : source_file 로 명시된 파일 전체를 읽음. read 뒤 괄호 표시() 꼭 할 것.
score_file = open("score.txt","r",encoding="utf8") # r - read
print(score_file.read()) # 전체를 읽어 오는 코딩
score_file.close()
# 출력 방법 2-1. ( .readline() 한 줄 씩 출력, while 문 이용하여 전체 출력)
- readline() 을 사용할 경우, 해당 파일의 한 줄씩 읽은 후, 다음 줄(Enter)로 이동. print와 혼합 사용 시, 2줄을 이동하게 됨. 1줄로 변경하고 싶을 경우, end ="" 으로 설정. ex) print(score_file.readline(), end="")
- 전체 파일이 몇 줄로 구성되어 있는지 모를 경우에는 사용이 제한되어 전체를 읽을 경우, while 문과 혼합하여 사용
score_file = open("score.txt","r",encoding="utf8") # r - read
print(score_file.readline()) # 1줄씩 읽기, 읽은 후, 다음 줄(Enter)로 이동
print(score_file.readline()) # print 와 readline으로 인한 2줄 이동을 1줄 이동으로
print(score_file.readline()) # 변경하고 싶을 경우, end = "" 으로 적용
print(score_file.readline()) # print(score_file.readline(), end="")
score_file.close()
# 출력 방법 2-2 ( readline, while, break 사용)
- 1 줄씩 읽되, while 문을 이용하여 마지막까지 읽고, break를 이용하여 구문 종료함.
- 결과 값의 2줄을 제외하고 싶을 경우, print(line, end="") 으로 1줄로 변경 가능.
- 추가로 알게된 기능으로 if 와 else 의 경우, 들여쓰기(노란색 줄)이 맞을 경우, else 를 생략하여도 else로 동작하는 것을 확인함.
score_file = open("score.txt","r",encoding="utf8") # r - read
while True :
line = score_file.readline()
if not line :
break
print(line) # 줄을 if 와 맞춰 쓸 경우, else를 쓰지 않아도 else 구문으로 인식
score_file.close()
# 출력 방법 3. ( .readlines 와 for 문을 이용하는 방법)
- .readines() 를 이용하여 list 형태로 저장 후, for 반복문 사용
score_file = open("score.txt","r",encoding="utf8") # r - read
lines = score_file.readlines() # list 형태로 저장
for line in lines :
print(line, end="")
score_file.close()
: 프로그램에서 사용중인 데이터를 파일 형태로 저장. 저장된 파일을 다른 사용자(또는 개발자)에게 전달 가능
# 4-1 pickle 저장(출력) / dump
- import pickle 후, 생성될 file 명을 open 으로 생성 (profile.pickle)
- wb : write , binary ( pickle 사용시에는 binary 를 사용해야 함)
- pickle.dump 를 이용하여, profile_file 에 있는 값 들을 profile.pickle에 저장
- pickle 사용 시에도 open 이후, close 까지 진행하여야함. 생략 불가.
import pickle
profile_file = open("profile.pickle", "wb") # b : binary
profile = {"이름": "박명수", "나이":30, "취미":["축구","골프","코딩"]}
print(profile)
pickle.dump(profile,profile_file) # profile에 있는 정보를 file에 저장
profile_file.close()
# 4-2 pickle 읽기(입력) / load
- import pickle 후, 생성될 file 명을 open 으로 생성 (profile.pickle)
- rb : read , binary ( pickle 사용시에는 binary 를 사용해야 함)
- pickle 사용 시에도 open 이후, close 까지 진행하여야함. 생략 불가.
import pickle
profile_file = open("profile.pickle", "rb") # b : binary
profile = pickle.load(profile_file) # 파일에 있는 정보를 profile에 불러오기
print(profile)
profile_file.close()
: 파일을 열고 닫는 기능을 하며, 좀 더 편함(close 를 진행하지 않아도 됨)
- 코딩이 좀 더 줄어들고, open 후, close라는 불편함이 줄어듬
import pickle
with open("profile.pickle","rb") as profile_file:
print(pickle.load(profile_file)) # with 문은 close를 사용하지 않아도 됨
# 결과 값 : {'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
# 위 코딩의 profile.pickle 파일을 생성하였을 경우 출력(4-1 참조)
# 위의 3번 과 4번의 입력에서와 같이 oepn -> 내용 입, 출력 -> close 등의 과정이 단순화 됨
# with 입력 예
with open("study.txt","w", encoding="utf8") as study_file:
study_file.write("파이썬을 열심히 공부하고 있어요") # 2줄로 파일 생성 가능
# with 출력 예
with open("study.txt","r", encoding="utf8") as study_file:
print(study_file.read())
------------------------------------------------------------------------------
당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있습니다.
보고서는 항상 아래와 같은 형태로 출력되어야 합니다.
- X 주차 주간보고 -
부서 :
이름 :
업무 요약:
1주차 부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하시오.
조건 : 파일명은 '1주차.txt', '2주차.txt', ... 와 같이 만듭니다.
------------------------------------------------------------------------------
Ans 1. 내가 작성한 코딩. 문제를 잘 못 읽고 1년(52주)를 작성함...ㅡㅡ;;
해당 사항 외에는 변수 값 외 나도코딩님과 차이 없음.
for week in range(1,53):
with open("{0}주차.txt".format(week),"a", encoding="utf8") as work_file:
work_file.write("- {0} 주차 주간보고 -\n" .format(week))
work_file.write(" 부서 : \n")
work_file.write(" 이름 : \n")
work_file.write(" 업무 요약 : \n")
# 참고 처음 실패한 코딩(.format 위치를 가장 뒤에 썼을 때, oepn 에서 적용되지 않고, write 부분에서만 적용됨.
- 1개의 파일 {0}주차.txt 에 1~52주차 주간보고 내용이 작성됨. 문제를 잘 못 읽고 1년(52주)를 작성함...ㅡㅡ;;
for week in range(1,53):
with open("{0}주차.txt","a", encoding="utf8".format(week)) as work_file: # 문제의 부분
work_file.write("- {0} 주차 주간보고 -\n" .format(week))
work_file.write(" 부서 : \n")
work_file.write(" 이름 : \n")
work_file.write(" 업무 요약 : \n")
Ans 2. '나도코딩' 님 답안
for i in range(1,51):
with open(str(i) +"주차.txt", "w", encoding="utf8") as report_file:
report_file.write("- {0} 주차 주간보고 -" .format(i))
report_file.write("\n부서 : ")
report_file.write("\n이름 : ")
report_file.write("\n업무 요약 : ")
FeedBack
이번에는 나도코딩과 거의 유사하게 작성함. 가장 간편한 형태로 작성하여 비슷한 작성이 진행되었던 것 같고,
당연한 내용이지만, for 대신 while 문, with 대신 print 나 .write 등을 조합하여도 작성가능할 것 같다.
유튜버 '나도코딩' 님의 영상을 보며 공부 및 노트 작성합니다.
함께 공부해 나가실 분은
[Python 파이썬 독학 7-1일차] (0) | 2020.09.28 |
---|---|
[Python 파이썬 독학 자가 점검] (0) | 2020.09.26 |
[Python 파이썬 독학 5일차] (0) | 2020.09.23 |
[Python 파이썬 독학 4일차] (0) | 2020.09.22 |
[Python 파이썬 독학 3일차] (0) | 2020.09.22 |
댓글 영역