본문 바로가기
Programming/Python정리

파이썬(Python3) 입력 input(), 출력 print() 함수 다양한 사용법

by $#spacecoding#$ 2022. 10. 3.

이 글의 구성

파이썬(Python) 프로그래밍 언어를 이용해 코딩을 할 때 자주 사용되는 어떤 값을 입력하는 방식과 다양한 방식으로 출력하는 방식을 설명한다. 매번 입력과 출력을 할 때마다 검색해서 찾아다니는 것보다 한 곳에 정리가 돼있으면 좋을 것이라 판단하였다. 이 글의 구성은 다음과 같다.

  • 입력 함수 input()
    1. 한 개의 입력값을 받는 경우
    2. 정수형 데이터를 입력받는 경우
    3. 두 개 이상의 정수를 입력받는 경우
  • 출력 함수 print()
    1. 일반적인 출력방법
    2. %를 사용하는 방법
    3. format을 사용하는 방법
    4. 문자열 안에 변수를 넣는 방법 f"string {variable}"

 

 

사용방법

입력 함수 input()

첫 번째 경우는 일반적인 case로  input() 함수는 한 번에 한 개의 입력값만 받을 수 있다. 또한 이 함수로 입력받은 값은 자동으로 문자열(string)이 된다. 

#Case1: 그냥 입력받아서 변수에 할당하는 방법
variable=input()

#Case2: 유저에게 입력을 할 때 특정 메시지를 전달하는 경우
number=input("Type the number you want: ")

 

 

두 번째 경우는 정수형 데이터를 입력받고자 할 때 사용하는 방식이다. input() 함수로 받은 문자열(string)을 정수형으로 바꾸기 위해서 int() 함수로 감싸주면 된다. 아래와 같이 숫자를 입력해서 출력을 하면 console에 출력되는 눈에 보이는 7이랑 13 둘 다 똑같이 숫자형 자료 타입으로 보이지만 type() 함수를 통해 어떤 자료형인지 확인했을 때 차이가 드러난다. 그냥 input()으로 받은 것은 'str' (string)이고 int(input())으로 받은 값은 'int' (integer)인 것을 알 수 있다. 

num1=input("Type the number you want: ")
print(num1, type(num1))

num2=int(input('Type your number: '))
print(num2, type(num2))

input() 함수로 입력받을 때 차이점: 문자열 과 정수형
input() 함수로 입력받을 때 차이점

 

 

세 번째 경우인 두 개 이상의 정수들을 입력받는 방식에서는 map() 함수와 split() 함수를 활용한다. 

a,b=map(int, input().split())
num1, num2, num3=map(int, input().split())

 

먼저 map() 함수의 syntax를 간단히 살펴보면 아래와 같다. function에는 반복적으로 iter에 적용할 함수가 온다. iter에는 리스트, 튜플(tuple), 문자열(string) 등 다양한 대상이 올 수 있으며 위에서 사용한 코드에서는 function에 int() 함수가 오고, iter에 input(). split()이 온다. 

map(function, iter)

split() 함수는 문자열(string)을 특정 기준으로 쪼개 주는 기능을 하는데 이와 같이 아무것도 지정되어있지 않으면, 빈칸이나 엔터를 기준으로 문자열을 쪼갠다. 즉 한 줄에 여러 개의 정수들을 입력받고자 할 때, 필요한 정수들을 할당할 변수들 a, b, num1, num2, num3을 지정하고 위와 같이 입력을 받으면 된다. 

 

 

 

 

 

 

 

출력 함수 print()

사람들이 출력 함수를 사용할 때 직면하게 되는 고민들 위주로 정리하였다. 단순히 print() 함수로 숫자형과 문자형 자료형 타입들을 각각 따로 출력할 때는 문제가 없다. 

print(23) #23숫자를 출력
print("This is string1. ") # ""을 사용해서 문자열을 출력
print('This is string2. ') # ''을 사용해서 문자열을 출력

하지만 이처럼 

print(23,"is a number")
print('string1 '+ "string2")
print("num1"+"num2")
print(12+25)
print(13 + "is a number")

print() 함수로 숫자형과 문자열을 동시에 출력할 때 발생하는 문제
숫자형과 문자열을 동시에 출력할 때 발생하는 문제

위와 첫 번째 경우처럼 숫자와 문자열을 comma(,)로 이어 줄 때는 문제가 되지 않지만, 네 번째처럼 +를 이용해 숫자형과 문자열을 동시에 출력하려고 할 때 서로 Datatype 이 달라서 문제가 발생한다. 이제, 숫자형과 문자열을 출력할 때 사용하는 방법들을 아래에서 소개한다. 

 

 

 

먼저 고전적인 방법 숫자형을 str()을 통해 문자열로 변경해서 다른 문자열과 같이 출력하는 방법과  %를 사용해서 문자열(string) 안에 숫자를 넣어주는 방식이다. 

print(str(17) + " is a number")
print("Your expecting socre is %d"  %(98))
print('Expecting stock is %f %' %(0.04))

%를 사용해 숫자를 문자열안에 넣어서 출력시 발생하는 문제점
%를 사용해 숫자를 문자열안에 넣어서 출력시 발생하는 문제점

이와 같은 방식에서 숫자를 넣을 자리에 % d 혹은 % f를 사용하고 string 이 끝난 후에 %(숫자)를 사용해서 집어넣을 숫자를 적어준다. 하지만 이 방식에서 발생하는 문제는 세 번째 출력문처럼 주식이 몇 % 인지 출력하고자 할 때 %를 두 번 사용하게 되면서 에러가 발생한다. 

 

이제 더 효율적인 방식인 format을 사용하는 법을 소개하겠다. 

 

print("I have {} apples and {} cookies".format(7,15))
print("{},{},and {} will come to the party. ".format("Jack", 'Faith', 'Bruce'))
print("I get {} boxes of beer from {}".format(27, "Nick"))

format 을 이용한 print() 출력방식
format 을 이용한 print() 출력방식

 

문자열(string) 안에 { }를 넣어서 문자열이나 숫자형이 올 자리를 마련해주고, "string". fomat()처럼 끝에 점을 찍고 format 안에 앞에 { }로 비워둔 자리에 올 값들을 차례로 써주면 쉽게 사용할 수 있다. 이 방식을 사용하면 문자열 안에 숫자를 넣을 수도 있고 숫자와 문자열 둘 다 넣을 수도 있는 장점이 있다. 

 

 

마지막으로 소개할 방식은 문자열 안에 변수를 넣어줄 수 있는 방식으로 f"string {variable} " 과 같은 방식으로 사용하는데 한 가지 주의할 점이 여기에 넣어줄 variable을 미리 정의해줘야 한다. format 방식과 마찬가지로 숫자형이든 문자형이든 상관없이 동시 출력이 가능하다. 참고로 f 다음에 string을 감싸주는 것은 f""이나 f'' 나 전부 사용 가능하다. 

programming="Python"
number=7
print(f"I need to learn {programming}!!")
print(f"I want lucky {number}!")

문자열 안에 변수를 넣어서 출력하는 방법
문자열 안에 변수를 넣어서 출력하는 방법

 

 

 

 

 

 

결론(Conclusion)

파이썬 프로그래밍 언어를 사용하면서 입력과 출력을 효율적으로 그리고 다양한 방식으로 하고 싶을 때는 위에서 소개한 여러 가지 방식을 사용하면 좋다. 다시 한번 소개된 방식들을 정리하자면 아래와 같다. 

  • 단일 값을 입력받을 때 input()
  • 단일 정수를 입력받을 때 int(input())
  • 두 개 이상의 정수를 입력받을 때 map(int, input(). split())
  • 문자열 안에 숫자와 문자를 동시에 출력하고 싶을 때는 print("String { }". format(var))
  • 문자열 안에 변수를 포함해서 출력하고 싶을 때 print(f"stirng {variable}")




댓글