본문 바로가기

Programming Language/Python

파이썬_기초단계 알아보기_ep.4 인풋이 좋아야 아웃풋이 좋죠!

320x100
ep.4 파이썬의 Input(입력)과 Output(출력)

 

내 메모리에 직접 파일을 만들거나
메모장을 만들어서 자동으로 텍스트를 쓰는 방법을
배우게 됩니다.

다양한 출력방법도 알 수 있습니다.

 

 

마법사는 영화나 만화에서 매우 자주 등장하는 역할입니다.

최근 '닥* 스트레인지', '블x 아담'에도 마법사가 나오죠?

 

근데 여기서 나오는 마법사들, 공통적으로 부리는 마법들이 있습니다.

 

마법사의 소양, 바로 손 안대고 물건 옮기기죠 🎆
지금 보니 물건이 공중에 둥둥 떠다니거나,
타인에게 물건을 전해주는 일은 해리포터, 반지의 제왕 등
정말 다양한 마법사들이 보여주는 공통적인 스킬인 것 같습니다.
🤣

하지만 컴퓨터로도 손 안대고 물건 만들기가 가능합니다.
(정확하게는 손 안대고 파일 만들기)
어떻게? 파이썬의 명령어를 통해서죠!
✨✨✨

 

6장 입력과 출력

6.1 화면 출력

 

지난 시간에 했던 내용을 돌아가 봅시다.

기본적인 문자열의 출력을 파이썬에서 어떻게 할까요.

 

print("hello pytion!!")
hello pytion!!

 

문자열 여러개를 연결하여 출력합니다.

 

print("Best","Python","book")

 

(자동으로 공백 발생)

 

Best Python book

 

특수하게도 파이썬에는 공백 대신, 다른 문자열로

바꿔서 쓸 수 있는 방법이 존재합니다.

 

sep 활용 (공백 대신 다른 문자열)

 

print("Best","python","book", sep = "-")
Best-python-book

 

빈칸없이 문자를 연결하려면 어떻게 할까요.

 

print("abcd" + "efg")
abcdefg

 

여기서 빈칸 혹은 공백도 메모리 1을 잡아먹습니다.

콤마와 +를 같이 사용한 예시입니다.

 

print("best", "of best"+" python","book"+":", "This Book")

 

어떤 차이인지 보이시나요?

바로 , 콤마는 띄어쓰기를 지원하지만 + 플러스는 

띄어쓰기를 지원하지 않습니다.

 

best of best python book: This Book

 

문자열과 숫자를 다양하게 같이 출력할 수 있습니다.

 

name = "T'chala"
ID_num = 789
print("Name:",name +",", "ID_num:",ID_num)
Name: T'chala, ID_num: 789

 

지금까지 문자열들을 출력해보니, 어쩐지 문제가 있습니다.

바로 줄을 띄어서 쓴 적이 없다는 것인데요.

 

여러 줄로 출력하는 방법, 따로 있습니다.

 

여러 줄로 출력하기 (개행문자 \n)

 

print("T'chala is my friend. \nHe is Korean")

 

\ (₩)기호를 쓰는 방법은 키보드마다 약간씩은 다릅니다.

거의 엔터키 위에 있는데요. 키보드마다 ₩이기도, \로 

눌러지기도 합니다. 

 

출력화면

 

T'chala is my friend. 
He is Korean

 

자동으로 줄 바꿈이 되는 것을 알 수 있습니다.

 

줄 두번 바꿈

 

print("T'chala is my friend.\n\nHe is Wakandain")
T'chala is my friend.

He is Wakandain

 

줄을 바꾸지 않고 출력하는 것도 물론 가능합니다.

 

print("Welcome to")
print("Wakanda !")
Welcome to
Wakanda !

 

반대로, 줄 바꿈을 없애는 방법도 있습니다.

 

두 줄로 출력된 결과를 한줄로 출력하기 (end = "")

 

print("Welcome to ", end = "")
print("Wakanda !")
Welcome to Wakanda !

 

문장 마지막의 공백을 강제로 없애는 방법입니다.

end 부분을 날리게 됩니다.

 

형식 지정 출력

나머지 연산자(%)를 이용한 형식 및 위치 지정

 

나머지 연산자를 이용한 데이터의 출력형식과

위치를 지정하는 기본 구조

 

print("&type"%data)

print("%type%type"%(data1,data2))

 

이렇게 보면 복잡해보입니다.

예시를 보겠습니다.

 

name = "트찰라"
print("%s는 나의 친구입니다." % name)
트찰라는 나의 친구입니다.

 

name에 문자열을 저장해놓고, %s 형식으로

출력한 것입니다. s는 string의 줄임말이겠죠?

 

다른 형식도 알아보겠습니다.

 

r = 7  # 변수 r에 정수 데이터 할당
PI = 3.14159265357979  # 변수 PI에 실수 데이터 할당
print("반지름 : %s, 원주율: %f" % (r, PI))  
# 지정된 위치에 데이터 출력 (%d = dash(10진법), %f = float(실수))

 

위와 같이, %d는 10진법, %f는 실수를 나타냅니다.

이렇게 표현될 수 있습니다.

 

반지름 : 7, 원주율: 3.141593

 

형식 지정 문자열에서 출력 위치 지정

지난 시간에도 설명한 부분입니다.

format이 사용됩니다.

 

string.format을 이용하는 형식지정 문자열의 기본 구조
print("{0},{1},{2}......{n}"format(data_0,data_1,data_2,...., data_n)
(0부터 시작합니다)

 

animal_0 = "cat"
animal_1 = "dog"
animal_2 = "horse"

print("animal:{}".format(animal_0))
print("animal:{},{},{}".format(animal_0,animal_1,animal_2))

 

출력화면

 

animal:cat
animal:cat,dog,horse

 

출력 위치 변경

 

print("animal:{1},{2},{0}".format(animal_0,animal_1,animal_2))
animal:dog,horse,cat

 

데이터가 순차적으로 순서를 지정하면 생략도 가능합니다.

 

format 출력 순서 생략

 

print("animal:{},{},{}".format(animal_0,animal_1,animal_2))
animal:cat,dog,horse

 

정수나 실수도 출력 가능

 

a = 0.123456789123456789
print("{0:.1f}, {0:.2f}".format(a))  
# 소수점 . 아래로 숫자를 입력하면 몇 자리수까지 반환이 가능

 

여기서, 소수점이 반환되는 자리수도 지정할 수 있습니다.

{N:'출력형식'을 지정하여 다양한 형태로 출력이 가능}

 

출력화면

 

0.1, 0.12

 

다른 예시

 

a = 0.1234567890
print('{0:10.7f},{0:.4f}'.format(a))
 0.1234568,0.1235

 

6.1 키보드 입력

data = input("문자열")

 

이제 우리는 파이썬과 질의문을 사용할 수 있습니다.

질문과 답변을 통해, 정말 다양한 것을 

만들어 볼 수 있겠죠?

 

한번 질문을 만들어보겠습니다.

 

yourName = input("당신의 이름은?")
print("당신은 {}이군요.".format(yourName))

 

이렇게 입력칸이 생기게 됩니다.

우리는 파이썬을 공부하니, 김파이썬이라고

입력해볼까요?

 

당신의 이름은?김파이썬
당신은 김파이썬이군요.

 

문장을 영어로, 좀더 길게 들어가보겠습니다.

 

yourPC = input("what is your computer?")
print("Damn! it is {}. I love it. I think it'll be awesome".format(yourPC))

 

질문에는 windows를 입력했습니다

 

what is your computer?windows
Damn! it is windows. I love it. I think it'll be awesome

{ } 자리에 출력됩니다.

 

숫자를 입력한 예

 

num = input("나이를 입력하세요:")
print("당신의 나이는 {} 이군요.".format(num))

반환 화면

 

 

20을 입력해보았습니다.

나이를 입력하세요:20
당신의 나이는 20 이군요.

 

다만 숫자를 연산에 이용하기 위해서는 변환해야 합니다

정사각형의 변의 길이로 넓이를 구하는 공식을

구현했습니다.

 

a = input("what is square's side length? ")
area = int(a) **2
print("square area is {} then".format(area))

반환 화면

 

저는 5를 입력해보겠습니다.

 

what is square's side length? 5
square area is 25 then

 

 

실수의 경우

(정수인지 실수인지 모르는 경우 실수로 처리하는 것이 좋음)

b = input("정사각형 한 변의 길이는?: ")
area = float(b)**2
print("정사각형의 넓이는: {}".format(area))

 

10을 입력합니다.

 

정사각형 한 변의 길이는?: 10
정사각형의 넓이는: 100.0

 

format은 줄임말로 .f를 사용할 수 있습니다.

 

.f와 { 변수 지정 }

b = input("정사각형 한 변의 길이는?: ")
area = float(b)**2
print(f"정사각형의 넓이는: {area}")

역시나. 똑같은 결과가 나옵니다.

 

정사각형 한 변의 길이는?: 10
정사각형의 넓이는: 100.0

 

6.3 파일 읽고 쓰기

출력결과를 화면이 아니라 파일로 출력하거나

읽어야 할 경우

 

이제 거의 다 왔습니다.
파일을 직접 들어가지 않고도
파이썬으로 움직이는 방법입니다

파일 열기

내장 함수인 open()을 이용해 파일을 열어야합니다
f = open('file_name','mode')

file_name = 열고자 하는 파일

mode = 파일의 속성

 

먼저 파일을 열기전에 알아두어야 할,

mode의 종류들입니다.

 

r = 읽기 모드로 파일열기(기본)
w = 쓰기 모드로 파일 열기. 같은 이름의 파일이 있으면 기존 내용은 모두 삭제됨.
x = 쓰기 모드로 파일 열기.
a = 추가 모드로 파일 열기. 같은 이름의 파일이 있는 경우 w와 같음
b = 바이너리 모드로 파일 열기
t = 텍스트 파일 모드로 파일 열기(기본) 지정하지 않으면 기본적으로 텍스트 모드로 지정됨

 

한번 텍스트파일을 아무거나 열어보겠습니다.

 

f = open('myFile.txt', 'w')

좋습니다

 

헌데, 일단은 감이 안오는것 같습니다.

실제로는 파이썬에서 열고 있는 상태입니다.

정말이군요.

파일을 써보겠습니다.

 

파일 쓰기

구조

f = open('file_name','w')

f.write(str)

f.close

먼저 저장할 경로부터 열어보겠습니다.

제 파일은 myPyCode 입니다

 

cd C:\myPyCode

 

파일을 쓰기모드로 열고, 문자열 입력 후 파일 닫기

 

f = open('myFile.txt', 'w')        # (1)'myFile.txt' 파일 쓰기 모드로 열기
f.write('This is my first file.')  # (2) 연 파일에 문자열 쓰기
f.close()                          # (3) 파일 닫기

 

좋습니다. 실제로 한번 봐볼까요?

 

 

BOOM!! 🔥🔥🔥

마법처럼 파일에 글씨가 써졌습니다.

 

안신기하다구요?

어쩔 수 없습니다.

 

이번엔 type으로 파일내용을 확인해보겠습니다.

 

!type myFile.txt

 

This is my first file.

 

이번엔 파일내용을 파이썬 안으로 불러왔습니다.

놀랍습니다.

 

이러한 놀라움을 파일에 표현해볼까요?

 'ㅇ'

 

f = open("myFile.txt","w")
f.write("'o'")
f.close()

 

텍스트 파일화면

 

잘 입력되었습니다.

 

파일을 읽고, 저장된 내용도 출력할 수 있습니다.

 

f = open('myFile.txt','r')  # (1) 'myFile.txt' 파일 읽기 모드로 열기
file_text = f.read()        # (2) 파일 내용 읽은 후에 변수에 저장
f.close()                   # (3) 파일 닫기

print(file_text)            # (4) 변수에 저장된 내용 출력

 

'o'

 

이번엔 더 어려운 조건문과 함께하는 

파일쓰기를 알아보겠습니다.

 

6.4 반복문을 이용해 파일 읽고 쓰기

 

파일에 문자열 한줄씩 쓰기

구구단 중, 2단을 1~5까지 곱한 공식입니다.

 

f = open('two_times_table.txt','w')                    #(1) 파일을 쓰기 모드로 열기
for num in range(1,6):                                 #(2) for문 : num이 1~5까지 반복
    format_string = "2 x {0} = {1}\n".format(num,2 * num)  #저장된 문자열 생성
    f.write(format_string)                             #(3) 파일에 문자열 저장
f.close()                                              #(4) 파일 닫기

 

two_times_table.txt에 저장이 되었을텐데

굳이 txt를 찾지 않고도 바로 불러올 수 있습니다.

 

!type two_times_table.txt
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10

잘 입력되었습니다.

 

파일에서 문자열 한줄씩 읽기

 

readline()

readline을 이용해서 한줄씩 읽기를 시작할 수 있습니다.

 

f = open('two_times_table.txt')              # 파일을 읽기 모드로 열기
line1 = f.readline()                         # 한 줄씩 문자열을 읽기
line2 = f.readline()
f.close()                                    # 파일 닫기

print(line1,end="")                          # 한줄씩 문자열 출력 (줄바꿈 안한상태)
print(line2,end = "")

 

두줄을 입력했습니다.

2 x 1 = 2
2 x 2 = 4

 

이번엔 약간 다르게, while문을 이용해서

특별한 제한 없이, 텍스트파일을 한줄씩

출력하겠습니다.

 

f = open('two_times_table.txt')               # 파일을 읽기 모드로 열기
line = f.readline()                           # 문자열 한 줄 읽기
while line:                                   # line이 공백인지 검사해서 반복 여부 결정
    print(line,end = "")                      # 문자열 한 줄 출력 (줄바꿈 안함)
    line = f.readline()                       # 문자열 한줄 읽기

f.close()
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10

모두 출력되는 화면입니다.

 

readlines( )

아까와 유사하지만, 한꺼번에 출력합니다

 

f = open('two_times_table.txt')  #(1) 파일을 읽기 모드로 열기
lines = f.readlines()            #(2) 파일 전체 읽기(리스트로 변환)
f.close                          #(3) 파일 닫기

print(lines)                     # 리스트 변수 내용 출력

 

특별한 점이 있다면, 문장끝에 숨어있던 개행문자가

공식 옆에 튀어나온다는 점입니다.

 

['2 x 1 = 2\n', '2 x 2 = 4\n', '2 x 3 = 6\n', '2 x 4 = 8\n', '2 x 5 = 10\n']

 

for 문을 이용하여 전체 읽기

 

f = open('two_times_table.txt') # 파일을 읽기 모드로 열기
lines = f.readlines()           # 파일 전체 읽기 (리스트로 반환)
f.close()                       # 파일 닫기
for line in lines:              # 리스트를 <반복 범위>로 지정
    print(line, end="")         # 리스트 항목을 출력(줄바꿈 안함)

 

6.5 with 문을 활용해 파일 읽고 쓰기

with 문의 구조

with open('file_name','mode')as f:

 <코드 블록>

 

with 문을 안쓴 예시

f = open('myTextFile.txt', 'r')   # 파일 열기
test = f.read()                   # 파일 읽기         
f.close()                         # 파일 닫기
print(test)
File write/read test.

 

f=  open을 활용한 파일 쓰기와 유사합니다.

 

다만 차이점은 경로를 지정함과 동시에, 

문장을 쓸 수 있다는 점입니다.

 

with open('C:\myPyCode/myTextFile2.txt','w')as f:   #(1) 파일 열기   as f : 현재 포맷을 존중합니다.
    f.write('File read/write test2: line1\n')       #(2) 파일 쓰기
    f.write('File read/write test2: line2\n')
    f.write('File read/write test2: line3\n')

 

실제 파일에도 확인해볼까요?

 

잘 되었습니다.

 

파이썬에도 출력해보겠습니다.

 

with open('C:\myPyCode/myTextFile2.txt')as f:      #(1) 파일 열기
    file_string = f.read()                         #(2) 파일 읽기
    print(file_string)
File read/write test2: line1
File read/write test2: line2
File read/write test2: line3

 

좋습니다.

이번엔 세번째 파일에 특별히 구구단 3단의

다섯번째까지 입력해보겠습니다.

 

for문을 이용합니다

 

with open ('C:\myPyCode/myTextFile3.txt','w') as f:
    for num in range(1,6):
        format_string = "3 x {0} = {1}\n".format(num,3*num)
        f.write(format_string)

 

여기서 \n은 특별한 역할은 없고, 줄을 띄어주는 역할 뿐입니다.

0번 자리에는 차례로 올라가는 숫자가, 1번 자리에는 숫자 * 5가 

정상적으로 입력됩니다.

 

확인해볼까요?

 

!type myTextFile3.txt
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15

 

하는 김에 9까지 곱해보겠습니다.

 

with open ('C:\myPyCode/myTextFile3.txt','w') as f:
    for num in range(1,10):
        format_string = "3 x {0} = {1}\n".format(num,3*num)
        f.write(format_string)

!type myTextFile3.txt
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

 

바로 입력이 완료됬습니다.

 

이렇게 해서, 메모장을 직접 켜서 입력하지 않고,

파이썬만으로 원격 조종하는 것처럼 텍스트들을

쓰는 마법같은 작업을 할 수 있습니다.

 

이상으로 인풋과 아웃풋 단계를 마치겠습니다.

다음 단계는 파이썬의 꽃인 함수 입니다.

 

다음단계 배우기 : https://astart.tistory.com/11

 

728x90