파이썬 기초개념(3)

2star_·2024년 10월 4일
0

Python

목록 보기
6/13

Quiz

파일 Quiz. 당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있습니다.
보고서는 항상 아래와 같은 형태로 출력되어야 합니다.

'- X 주차 주간보고 -'
부서 :
이름 :
업무 요약 :
[1주차부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하시오.]
조건 : 파일명은 '1주차.txt', '2주차.txt', ... 와 같이 만듭니다.

내 답안 !

반복문을 이용해서 작성 해 보자.
while true를 이용해 무한루프와 break를 사용해보자.
with을 이용해서 주차별.txt파일을 만들고 present_file라는 변수에 저장을 하자
.write함수를 사용해서 한줄로 적으며 \n을 사용해 줄바꿈을 이용해보자
의문점 : \n를 사용하지 않으려면 with을 사용하면 안되는가?. 텍스트 줄바꿈이 길어지면 코드가 복잡하게 될 것 같은데. 한칸씩 .write를 쓰니 줄바꿈이 되지 않았다.

n = 1
while True:
    with open(f"{n}주차.txt", "w", encoding="utf8") as present_file:
        present_file.write(f"- {n} 주차 주간보고 - \n이름 : \n업무 요약 :")
    n += 1
    if n == 51:
        break

강의 답안

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업무 요약 :")

4줄을 쓰고, 줄바꿈은 \n으로 역시 했다! while 대신 for를 사용해서 답을 도출함.

표준 출력과 표준 에러 (?)

import sys
print("Python", "Java", file=sys.stdout) # 표준 출력
print("Python", "Java", file=sys.stderr) # 표준 에러

이해가 잘 안갔다. 넘어가고 다시오자.

출력

#시험 성적
scores = {"수학":0, "영어":50, "코딩":100}
for subject, score in scores.items():    #items : 키 벨류 쌍으로 나온다
    print(subject,score)
    print(subject.ljust(8),str(score).rjust(4), sep=(":")) # 과목은 8개의 공간을 만들고 왼쪽 정렬 , 스코어는 4개의 공간을 만들고 오른쪽 정렬

#은행 대기순번표
#001, 002, 003, ...
for num in range(1, 21): 
    print("대기번호 : " + str(num).zfill(3))  # 3크기 만큼 공간 확보, 값이 없으면 0삽입

#input 함수
answer = input("아무 값이나 입력하세요 : ")
print("입력하신 값은 " + answer + "입니다.")  # 글자를 써도 str없이 잘 표현된다
# 주의 : 사용자 입력을 이용해서 만들면 항상 문자열(str) 상태로 입력된다.
print(type(answer))

다양한 출력 포맷

# 빈 자리는 빈공간으로 두고, 오른쪽 정렬을 하되, 총 10자리 공간을 확보
print("{0:>10}".format(500))
# 양수일 떈 +로 표시, 음수일 땐 -로 표시
print("{0:>+10}".format(500))
print("{0:>+10}".format(-500))

# 왼쪽 정렬하고, 빈칸을 _로 채움
print("{0:_<+10}".format(500))

#3자리 마다 콤마를 찍어주기
print("{0:,}".format(100000000000))

#3자리 마다 콤마를 찍어주기, +- 부호도 붙이기
print("{0:+,}".format(100000000000))
print("{0:+,}".format(-100000000000))

#3자리 마다 콤마를 찍어주기, 부호도 붙이고, 자릿수 확보하기
#돈이 많으면 행복 -> 빈 자리는 ^ 로 채워주고
print("{0:^<+30,}".format(1000000000000))

#소수점 출력
print("{0:f}".format(5/3))

#소수점 특정 자리수 까지만 표시하고 싶다. (소수점 3째 자리에서 반올림)
print("{0:.2f}".format(5/3))

파일 입출력


#파일 입출력
score_file = open("score.txt", "w", encoding="utf8") #쓰고싶어 "w"
print("수학 : 0", file=score_file)
print("영어 : 50", file=score_file)
score_file.close()

score_file = open("score.txt", "a", encoding="utf8") # append를 이용해 덧붙인다.
score_file.write("과학 : 80") # write를 쓸때는 줄 바꿈이 따로없음
score_file.write("\n코딩 : 100")
score_file.close

#한 번에 모든 내용 불러오기
score_file = open("score.txt", "r", encoding= "utf8")
print(score_file.read())
score_file.close()

# 한 줄씩 가져오기
score_file = open("score.txt", "r", encoding= "utf8")
print(score_file.readline()) # 줄별로 읽기 , 한 줄 읽고  커서는 다음 줄로 이동.
print(score_file.readline(), end= "") # 줄 바꿈 안하고 싶을 땐 뒤에 end= "" 넣기 
print(score_file.readline())
print(score_file.readline())
score_file.close()

# 방법 2
score_file = open("score.txt", "r", encoding= "utf8")
while True: #무한루프 
    line = score_file.readline() #라인을 한 줄씩 읽어보겠다.
    if not line: #읽어 올 라인이 없으면
        break # 반복문 탈출하기
    print(line, end="") #줄 바꿈 없애기 위해 end="" 추가함.
score_file.close()

# 방법 3
score_file = open("score.txt", "r", encoding= "utf8")
lines = score_file.readlines()  #모든 라인을 가지고 와서 list 형태로 저장한다.
for line in lines:
    print(line, end="")
score_file.close



##pickle : 프로그램상에서 우리가 사용하고 있는 데이터를 파일 형태로 저장하는 것.
import pickle
profile_file = open("profile.pickle", "wb") # w다음 b는 바이너리라고 하는데 pickle을 쓰기위해 항상 써 주어야 한다.
#피클에서는 따로 인코딩을 해 줄 필요가 없다.
profile = {"이름":"박명수", "나이":"30", "취미" :["축구","골프","코딩"]}
print(profile)
pickle.dump(profile, profile_file) #profile에 있는 정보를 file에 저장
profile_file.close()


#profile.pickle에서 데이터를 가져오기

profile_file = open("profile.pickle", "rb") # 읽기r바이너리b
profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기
print(profile)
profile_file.close() 

#정리 : 우리가 가지고 있는 데이터를 pickle을 이용해서 어떤 파일 profile.pickle에 저장을 하고
#그 파일에 있는 내용을 pickle.load의 load를 통해서 불러와서, profile < 변수에 저장을 해서 쓸 수 있도록 도와주는 유용한 라이브러리 




#with
#지금까지 파일을 열고 어떤 처리를 하고 파일을 닫는 것 까지 했다 with을 쓰면 더 편하게 가능

import pickle

with open("profile.pickle","rb") as profile_file: 
#with를 이용해서 앞서 만든 profile.pickle 파일을 여는데,. 열때는 읽기 형식인 r을 쓰고 피클은 b를 써야하니까 쓰고 이 파일 정보를 profile_file이라는 변수에 저장을 한다.

    print(pickle.load(profile_file)) #pickle.load를 통해서 이 파일을 읽어올 수 있다.
#with문을 사용하면 따로 파일을 닫을 필요없다. 파일 호출하며 자동으로 종료해 주기 때문.


#피클을 사용하지 않고 일반적인 파일을 쓰고 읽는 것을 with를 활용해서 해보자.
with open("study.txt", "w", encoding="utf8") as study_file: 
    study_file.write("파이썬을 열심히 공부하고 있어요.") #study.txt 파일이 생성되고 그 안에 문자가 들어가 있는 것을 볼 수 있다.

#생성된 study.txt 안의 파일을 불러오겠습니다.

with open("study.txt", "r", encoding="utf8") as study_file: #study.txt파일을 읽어오는데 파일 정보를 study_file 이라는 변수에 저장을 하고,
    print(study_file.read()) #study_file을 읽는 것을 프린트 하겠다.!

입출력 포맷... 차근차근 다시 보면서 익숙해 지도록 하자!

profile
안녕하세요.

0개의 댓글

관련 채용 정보