# 표준입출력
print("Python", "Java", sep="," , end = "?")
print("무엇이 더 재밌을까요?")
# end는 줄을 이어주는 역할
import sys
print("Python", "Java", file = sys.stdout)
#file.stdout은 파이썬 코드에서 출력한 내용을 표준 출력 스트림으로 전송하는 역할
print("Python", "Java", file = sys.stderr)
#file.stderr는 파이썬 코드에서 에러나 예외 메시지를 출력하는 스트림. 예를 들어, 코드에서 오류가 발생하면 에러 메시지가 file.stderr를 통해 표준 에러 출력 스트림으로 전송됨
scores = {"수학": 0, "영어": 50, "코딩": 100}
for subject, score in scores.items():
print(subject, score)
# for 문에서 이전에 선언하지 않은 변수를 임시로 사용하는 것도 가능한가?
# for문에서 변수를 선언하지 않고 사용하는 것은 파이썬에서 가능합니다.
# for문에서 items() 메서드로 딕셔너리의 키-값 쌍을 가져올 때, 각각의 키와 값은 subject와 score라는 임시 변수에 자동으로 대입됩니다.
# 이렇게 반복문 내에서 자동으로 변수가 생성되는 것을 변수 언패킹(variable unpacking) 이라고 합니다.
# 위 코드에서 subject는 딕셔너리 scores의 키를, score는 해당 키에 대응하는 값(value)을 순서대로 가리키게 됩니다.
# 따라서 첫 번째 반복에서는 subject에 "수학"이 대입되고, score에는 0이 대입됩니다.
# 두 번째 반복에서는 subject에 "영어"가 대입되고, score에는 50이 대입되는 식으로, 딕셔너리의 모든 키-값 쌍을 가져와서 처리합니다.
scores = {"수학": 0, "영어": 50, "코딩": 100}
for subject, score in scores.items():
print(subject.ljust(8), str(score).rjust(4), sep=":")
# 은행 대기순번표 : 001, 002, 003, ...
for num in range(1, 21):
print("대기번호 : ".ljust(5) + str(num).zfill(3).rjust(3))
answer = input("아무 값이나 입력하세요 : ") # input 변수를 통해 값을 받게 되면 항상 str형태로 저장됨
print("입력하신 값은 " + str(answer) + "입니다.")
# 빈 자리는 빈 공간으로 두고, 오른쪽 정렬을 하되, 총 10자리 공간을 확보하라
print("{0: >10}".format(500))
'''
{}는 문자열 포맷 코드로, {} 안에 들어가는 숫자는 format() 함수에서 인덱스를 나타냅니다.
{0}은 첫 번째 인자를 나타내고, {1}은 두 번째 인자를 나타냅니다.
이때, : >10은 출력할 값의 우측 정렬을 의미하며, 10은 출력할 값을 넣을 공간의 크기를 나타냅니다.
>는 오른쪽 정렬을 의미합니다. 만약 좌측 정렬을 하고 싶다면 <를 사용하면 됩니다.
^는 가운데 정렬을 의미합니다.
'''
# 양수일 땐 +로 표시, 음수일 땐 -로 표시
print("{0: >+10}".format(-500))
print("{0: >+10}".format(500))
# 왼쪽 정렬하고, 빈칸을 _로 채움
print("{0:_<+10}".format(500))
# 세 자릿수마다 콤마 찍어주기
print("{0:,}".format(100000000))
# 세 자릿수마다 콤마를 찍어주되, +- 부호도 붙이기
print("{0:+,}".format(100000000)) # +가 , 오른쪽으로 가면 인식이 안 됨
# 세 자릿수마다 콤마를 찍어주되, 부호도 붙이고, 자릿수도 확보하기
# 빈 자리는 ^표시로 채워주기
print("{0:^<+30,}".format(1000000000))
# 소수점 출력
print("{0:f}".format(5/3))
# 소수점을 특정 자리수까지만 출력
print("{0:.3f}".format(1/7))
# 파일 입출력
score_file = open("score.txt", "w", encoding = "utf8")
# open은 파일 여는 함수, "w"는 쓰기 위한 목적이란 뜻(덮어쓰기), utf8은 한글
print("수학 : 0", file = score_file)
print("영어 : 50", file = score_file)
score_file.close()
score_file = open("score.txt", "a", encoding = "utf8") # a는 append의 약자로 이어쓰기를 하게 해 줌
score_file.write("과학 : 80점") #.write기능에는 줄바꿈이 없음
score_file.write("\n코딩 : 100점")
score_file.close()
score_file = open("score.txt", "r", encoding = "utf8")
# r은 read를 뜻함, 파일에 있는 내용을 읽기 전용으로 연다는 뜻
print(score_file.read())
score_file.close()
score_file = open("score.txt", "r", encoding = "utf8")
print(score_file.readline(), end = "") # 줄별로 읽기, 한 줄 읽고 커서는 다음 줄로 이동
print(score_file.readline()) # print는 줄바꿈을 자동으로 해줌
print(score_file.readline())
print(score_file.readline())
score_file.close()
score_file = open("score.txt", "r", encoding = "utf8")
while True:
line = score_file.readline()
if not line:
break
print(line, end = "")
score_file.close()
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")
# "b"는 바이너리를 의미하는데, 피클을 하기 위해서는 바이너리 타입을 정의해줘야 함
# 피클에서는 따로 인코딩을 설정해줄 필요는 없음
profile = {"이름": "박명수", "나이": 30, "취미": ["축구", "골프", "코딩"]}
print(profile)
pickle.dump(profile, profile_file) # profile에 있는 정보를 file에 저장
profile_file.close()
profile_file = open("profile.pickle", "rb")
profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기
print(profile)
profile_file.close()
# with
import pickle
with open("profile.pickle", "rb") as profile_file:
# profile.pickle 파일을 읽기 전용 바이너리 파일로 불러와 profile_file에 저장
print(pickle.load(profile_file))
# profile_file을 pickle로 불러와 출력
# profile_file.close() 필요 없이, with문 탈출하면서 자동적으로 닫힘
with open("study.txt", "w", encoding = "utf8") as study_file:
study_file.write("파이썬을 열심히 공부하고 있어요")
with open("study.txt", "r", encoding = "utf8") as study_file:
print(study_file.read())
'''
Quiz) 당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있습니다.
보고서는 항상 아래와 같은 형태로 출력되어야 합니다.
- X 주차 주간보고 -
부서 :
이름 :
업무 요약 :
1주차부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하시오.
조건: 파일명은 '1주차.txt', '2주차.txt', ... 와 같이 만듭니다.
'''
for i in range(1,51):
with open("{0}주차.txt".format(i), "w", encoding = "utf8") as file:
file.write("- {0}주차 주간보고 -\n부서 : \n이름 :\n업무 요약:".format(i))
'파이썬 공부중 > 파이썬 기초' 카테고리의 다른 글
| 파이썬 기초 정리 01 (1) | 2024.02.03 |
|---|---|
| javascript와 python의 for문의 차이: (0) | 2024.02.03 |
| Python 기초 #8. 연습문제 (2) | 2023.03.08 |
| Python 기초 #7. 전달값과 반환값, 기본값, 지역변수와 전역변수 (0) | 2023.03.08 |
| Python 기초 #6 continue와 break, 연습문제 (0) | 2023.03.07 |