にゅうしゅつりょく


標準I/O


しゅつりょく


print("python", "java")        ->  python java
print("python" + "java")       ->  pythonjava


# seperator : 값들을 구분
print("python", "java", sep=",")      ->  python, java
print("python", "java", sep=" vs ")   ->  python vs java


# end : 2개 이상의 print를 한 줄에 엮기
print("Python", "Java", sep=",", end="?")
print("무엇이 더 재밌을까요?")   		-> python, java?무엇이 더 재밌을까요?


# sys 모듈
import sys
print("Python", "Java", file=sys.stdout) # 표준 출력    -> python java
print("Python", "Java", file=sys.stderr) # 표준 에러	  -> python java
# stdout 은 일반적인 내용을, stderr 는 에러 발생 시 관련 내용을 출력하기 위해 사용


# 정렬, ljust(), rjust()
scores = {"수학": 0, "영어": 50, "코딩": 100}
for subject, score in scores.items():  # key,value의 pair 값 들고옴
	print(subject, score)		-> 수학 0
        						-> 영어 50
        						-> 코딩 100
     	   
scores = {"수학": 0, "영어": 50, "코딩": 100}
for subject, score in scores.items():  
	print(subject.ljust(8), str(score).rjust(4), sep=":")
		-> 수학    :   0   
        -> 영어	  :  50			# ljust(8) 왼쪽 8칸 확보
        -> 코딩 	  : 100      	# rjust(4) 오른쪽 4칸 확보
        
        
# zfill : 전달 숫자만큼의 공간을 확보하고 그 공간을 0으로 채움
for num in range(1, 21):
	print("대기번호 : " + str(num))        ->  대기번호 : 1
    									 ->  대기번호 : 2  ...
                                         ->  대기번호 : 19
                                         ->  대기번호 : 20
for num in range(!, 21):
	print("대기번호 : " + str(num).zfill(3))   -> 대기번호 : 001
    										 -> 대기번호 : 002 ...
                                             -> 대기번호 : 019
                                             -> 대기번호 : 020

入力

answer = input("아무 값이나 입력하세요 : ")
print("입력하신 값은 " + answer + "입니다.")
		->   아무 값이나 입력하세요 :  # 10      		print(type(answer)) 
        ->   입력하신 값은 10입니다.    				# <class 'str'>
        ->   아무 값이나 입력하세요 :  # 나는나야
        ->   입력하신 값은 나는나야입니다.
# 원래 10은 오류가 나야하지만
# input으로 입력받은 값은 모두 str type이 되어 오류 안남.

複数種類の出力方法

print("{0}".format(500))			-> 500

# 앞을 빈 자리로 두고, 오른쪽 정렬, 총 10자리 공간 확보
print("{0: >10}".format(500))   	-> '       500'

# 빈 자리, 우측 정렬, +기호, 10칸 확보
print("{0: +>10}.format(500))       -> '      +500'
print("{0: +>10}.format(-500))      -> '      -500'

# 3자리 마다 콤마
print({0:,}.format(100000000))		->  100,000,000
print({0:+,}.format(100000000))		-> +100,000,000  # 기호 추가

# 빈 자리 ^로 채우기, 좌측 정렬, 기호, 20칸 확보, 3자리 콤마
print("{0:^<+20,}".format(100000000))    ->+100,000,000^^^^^^^^

# 소수점 출력 : float(싨수형)지료 출력, .(n)번쨰까지 출력
print({0:f}.format(5/3))		-> 1.666667
print("{0:.2f}".format(5/3))	-> 1.67     # 소수점 아래 두번째자리까지


----  {인덱스:[[빈자리채우기]정렬][기호][확보공간][콤마][.자릿수][타입]}  ---

ファイルI/O


入力


# open 함수 사용, open("파일명", "열기 모드", encoding="인코딩") 
score_file = open("score.txt", "w", encoding="utf8")  # w : write 모드
print("math : 0", file=score_file)
print("english : 50", file=score_file)
score_file.close()      
# print 되지 않고 score.txt 파일이 생기며 그 안에 내용 저장


# 내용 추가, a : append 모드
score_file = open("score.txt", "a", encoding="utf8")
score_file.write("science : 80")   		# write 함수 사용, 자동 줄바꿈 안됨
score_file.write("\ncoding : 100")  	# \n 줄바꿈 
score_file.close()
# print 되지 않고 score.txt 파일에 내용 추가


-------   score.txt  -------
math : 0
english : 50
science : 80
coding : 100
----------------------------

しゅつりょく

# 터미널에서 출력, r : read 모드
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.read())
score_file.close()              -> math : 0
								-> english : 50
								-> science : 80
								-> coding : 100

score_file = open("score.txt", "r", encoding="utf8")
print(score_file.readline()) # 줄 별로 읽기, 한 줄읽고 커서 다음줄로 이동
print(score_file.readline()) # 줄 바꿈 자동 포함
print(score_file.readline())			-> math : 0
print(score_file.readline())			
score_file.close()						-> english : 50

										-> science : 50
                                        
                                        -> coding : 100
# 한 줄씩 총 4줄을 들고 올 때                                       
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.readline(), end="") # 줄 별로 읽기, 줄바꿈 중복 방지
print(score_file.readline(), end="")
print(score_file.readline(), end="")		-> math : 0
print(score_file.readline(), end="")		-> english : 50						
score_file.close()							-> science : 50	
										    -> coding : 100

# 들고 올 줄이 몇 줄인지 모를 때
score_file = open("score.txt", "r", encoding="utf8")
while True:
    line = score_file.readline()
    if not line:      # 더 이상 들고오려는 줄이 없을 떼
        break		  # 반복문 탈출
    print(line, end="")		  # 읽어온 줄 출력, 줄바꿈 중복 방지
    
score_file.close()			-> math : 0
							-> english : 50
                            -> science : 80
                            -> coding : 100

# list에 저장해두고 list를 반복 순회
score_file = open("score.txt", "r", encoding="utf8")
lines = score_file.readlines() # list 형태로 저장, 파일 내 모든 줄 저장
for line in lines:
    print(line, end="")
    
score_file.close()			-> math : 0
							-> english : 50
                            -> science : 80
                            -> coding : 100

pickle

# pickle : 프로그램에서 사용하고 있는 데이터를 파일 형태로 저장하거나 
# 		   불러올 수 있게 해주는 모듈

import pickle
									  # w : write, b : binary 형태
profile_file = open("profile.pickle", "wb")  
profile = {"이름" : "박명수", "나이" : 30, "취미" : "코딩"}
print(profile)
pickle.dump(profile, profile_file) # profile에 있는 정보를 file에 저장
profile_file.close()     ->  워크스페이스 내에 profile.pickle 파일 생김
# dump(data, dest_file) : pickle을 이용하여 데이터를 파일로 저장할 때 사용하는 함수

profile_file = open("profile.pickle", "rb") as profile_file: # r:read
profile = pickle.load(profile_file) # file에 있는 정보를 profile 에 읽어오기
print(profile)     


With

with : 파일을 열고 나서 자동으로 닫아줌(close() 필요없음)

import pickle

with open("profile.pickle", "rb") as profile_file:
	print(pickle.load(profile_file))  
    	->  {'이름': '박명수', '나이': 30, '취미': '코딩'}
        
        
# with로 파일 만들고 불러오기
With open("study.txt", "w", encoding="utf8") as study_file:
	study_file.write("파이썬을 열심히 공부하고 있어요.")
    	-> study.txt 파일 생김
with open("study.txt", "r", encoding="utf8") as study_file:
	    print(study_file.read())
			-> 파이썬을 열심히 공부하고 있어요.