(나도코딩의 파이썬 입문) 8장. 입출력(p.221 ~ p.237)

2023. 3. 5. 14:48독서

반응형

안녕하세요!

<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.

 

오늘은 8장 '입출력'에 대해서 학습할게요!

 

오늘 공부할 내용은 다음과 같습니다.

 

🧐 공부할 내용(p.221 ~ p.237)

  • 표준 입력받기: input()
  • 표준 출력 시 융용한 기능
  • 다양한 형식으로 출력하기: format()

 

1. 표준 입력받기: input()


파이썬에서 표준 입력으로 input()을 사용합니다.

 

input()은 모든 입력을 "문자열"로 받아요

그렇기 때문에 이런 코드가 가능한 것이죠

 

num = input("숫자를 입력해주세요: ")
print("입력된 숫자는 :" + num +"입니다.")

 

숫자가 입력으로 들어왔는데 str(num)으로 변환하지 않아도 돼죠.

왜냐하면 "문자열"이기 때문이죠.

 

 

그럼 이를 숫자로 바꾸려면 어떻게 하면 될까요?

 

num = int(input("숫자를 입력해주세요: "))
print("입력된 숫자는 :" + str(num) +"입니다.")

int()를 붙여주면 int타입의 숫자로 바꿀 수 있습니다.

 

 

 

2. 표준 출력 시 유용한 기능


1) 구분자 넣기: sep

 

이전 7장에서도 잠깐 나온 내용입니다.

print문 마지막에 sep=" "을 넣어서 문자열을 sep 기준으로 나누어 출력했죠?

 

참고로 sep은 separator의 준말입니다.

 

print("python", "java", sep =", ")

 

이렇게 쉼표를 기준으로 나누어서 출력을 할 수 있죠!

 

 

2) 문장 끝 지정하기: end

 

print()문은 기본으로 end가 설정되어 있습니다.

어떻게 확인할 수 있을까요?

 

맥: cmd + 클릭

윈도우: cntrl + 클릭

 

print를 위와 같이 클릭하게 되면 함수의 정의가 나오게 됩니다.

 

이렇게요.

 

 

보이시나요?

 

print의 end는 기본 값으로 "\n" 즉, 줄바꿈 문자가 들어가 있습니다.

 

그렇기 때문에 print()만 입력하면 자동으로 줄바꿈을 해주는 것이죠.

 

print("python", "java", end="? ")
print("무엇이 더 재미있을 까요?")

 

이런 코드를 입력하면 한 문장으로 출력되는 걸 확인할 수 있어요.

 

 

3) 출력 위치 지정하기: file

 

import sys
print("python","java", file=sys.stdout)
print("python","java", file=sys.stderr)

 

print문 마지막에 file을 사용하면 출력 방식을 설정할 수 있어요.

 

파이썬의 경우 서버 개발에 많이 사용하게 되고, 서버는 로그(log)를 남기는 것이 매우 중요합니다.

 

로그를 남길 때 저 file을 사용하게 돼요.

 

실제 로그에서는 어떤 것이 에러인지, 단순 출력인지 구분하는 것이 중요하니까요!

 

 

4) 공간 확보하기: ljust(), rjust()

ljust()와 rjust()는 각각 괄호 안에 숫자만큼 공간을 확보한 후, 왼쪽, 오른쪽 정렬을 하는 메서드 입니다.

 

scores = {"math" : 0, "eng": 50, "coding":100}

for subject, score in scores.items():
    print(subject.ljust(8), str(score).rjust(4),sep=":")

 

🥕멘토 TIP

추가적으로 가운데 정렬하는 메서드도 있답니다.

 

scores = {"math" : 0, "eng": 50, "coding":100}

for subject, score in scores.items():
    print(subject.center(8), str(score).rjust(4),sep=":")

 

center()를 사용하면 가운데 정렬을 할 수 있어요.

 

 

5) 빈칸 0으로 채우기: zfill()

 

빈칸을 0으로 채우는 메서드인 zfill은 책의 예시처럼 많이 사용해요.

 

괄호 안에 음수가 들어갈 수도 있는데요, 음수가 들어가면 기존의 문자열을 반환합니다.

 

또한 음수가 문자열에 +, -등의 기호가 있다면 그 기호 뒤에서부터 문자를 채워요.

 

org = "+hello"
print(org.zfill(8))

 

 

3. 다양한 형식으로 출력하기: format()


이전에 print문을 배우면서 format을 사용한 적이 있어요.

 

이번에는 format을 활용해서 다양한 방식으로 출력을 해보려고 합니다.

 

 

print("{0: >10}".format(500))

 

여기에서 콜론 뒤에 오는 공백, '>', 10은 각각

빈칸으루 두기, 오른쪽으로 정렬하기, 지정한 만큼(10) 공간 확보하기를 의미합니다.

 

 

그럼 이것을 여러 방식으로 활용이 가능합니다.

 

 

print("{0:+<10}".format(500))

 

이렇게 하면 어떻게 될까요?

 

'먼저 10칸을 확보하고, 숫자 500을 왼쪽 정렬한 후 나머지 공백을 모두 '+'로 채운다.'

 

이렇게 해석할 수 있어요.

 

 

그럼 이건 어떤가요?

 

print("{0: >+10}".format(500))

 

뒤에서 부터 읽어보죠. 

 

'먼저 10칸을 확보한 후 양수일 때 +기호를 붙여서 오른쪽 정렬한다.' 이렇게 이해할 수 있어요.

 

 

금액에서 3자리마다 쉼표를 찍는 것도 가능합니다.

 

print("{0:,}".format(10000000000))

 

 

재미있지 않나요?

 

책의 예제도 뒤에서 부터 읽으면 쉽게 이해할 수 있어요.

 

# 세 자리마다 쉼표를 찍고, 30칸을 확보한 후 왼쪽 정렬해, 남은 칸을 모두 ^로 채운다
print("{0:^<+30,}".format(1000000000000))

 

 

쉽죠?

 

 

 

p.236에 중요한 내용이 나옵니다.

 

print("{0:f}".format(5/3))

 

이렇게 콜론 뒤에 f를 추가하면 소수점 이하 여섯 자리까지 출력이 가능합니다.

 

또, 출력 자리를 제한하고 싶을 때는

 

print("{0:.2f}".format(5/3))

 

 

이렇게 사용할 수 있어요.

 

위 식은 소수점이하 3(2+1) 자리에서 반올림한 수를 출력하는 방식이에요.

 

 


이번 시간에는 입출력에 대해서 알아봤어요.

표준 입출력은 사용자의 입력을 받고 이를 출력해주기 위해 필수적인 개념이랍니다!

그럼 다음시간에는 8.4, 8.5, 8.6 장에 대해 다루도록 할게요!

 

궁금한 점이 있다면 댓글 남겨주세요!

 

✅ 정리

 

* 표준 입출력 받기: input()

* 표준 출력 시 유용한 기능

* 다양한 형식으로 출력하기: format()

반응형