자운최고지식인되기/파이썬 공부

2-2. 기본자료형과 입출력 [이론 및 실습]

ssoy1206 2025. 2. 20. 19:30

기본자료형과 입출력

입력


💡

입력 & 출력 : 프로그램의 목적

프로그램은 이용자가 어떤 문제를 해결하거나 일을 수행하기 위해 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체. 따라서 입력값을 통해 프로그램이 짜여진 명령문에 따라 출력값을 내뱉는 활동이 프로그램의 역할. 어떠한 입력값과 그 입력값에 대한 출력값이 존재하지 않는다면, 프로그램의 존재 의의가 불분명해짐

 

cf. 한글과 컴퓨터(hwp) 프로그램

⇒ 이용자가 원하는 문자 및 도표 등을 입력(input)할 수 있어야함

⇒ 입력한 내용을 문서화 하여 표시, 저장, 전송, 인쇄 등의 출력(output)이 가능해야함

 

cf. RPG 게임

⇒ 이용자가 원하는 캐릭터의 성질을 지정 (외형, 직업군, 플레이어명 등)

⇒ 이용자가 원하는 활동 (퀘스트 수행, 자원 채집, 오브젝트와의 상호작용 등)

⇒ 위 활동들을 위한 커맨드를 입력했을 때 화면상에 해당 행위에 대한 결과를 출력해주며, 게임의 진도가 저장되고 지속적으로 수행될 수 있어야함

 


Python에서의 입력

input() : 사용자에게서 값을 입력받는 함수

💡

변수명 = input() 형태로 작성

▸ 코드 실행시 사용자가 임의로 문자를 입력 가능한 box가 출력되고, 입력된 문자가 변수에 값으로 저장

함수 내의(괄호 안의) 문자열은 사용자에게 입력가이드로 화면상에 표시

예제

name = input('이름을 입력하시오 : ')
print(name + '님 반갑습니다.')

💡

위 코드 실행시, ‘ 이름을 입력하시오 : ‘ 는 입력할 내용에 대한 가이드로서 input box 좌측에 표시되며, input box에 내용 입력을 완료하면, 지정된 print() 함수에 input box에 삽입된 변수 name과 문자열 님 반갑습니다. 가 같이 출력된다.

input() 사용시 유의할 점

💡

모든 입력이 문자열로 저장됨

input() 유의할 점 예제

eng = input('영어 점수 : ')
math = input('수학 점수 : ')
totalScore = eng + math
print('총점 = ', totalScore) 

💡

우리가 일반적으로 기대하는 결과는 totalScore = 175 라는 결과를 원하지만,

input box에 입력된 값은 String 자료형 취급되며, Number 자료형으로 기능하지 못하기 때문에 덧셈 연산(+)을 하지 못하고 문자열을 나란히 배열하는 totalScore = 9085 결과만 출력

 

▸ 수 100 vs 문자열 ‘100’

수 100은 하나의 값으로 구성되며, 개수나 양의 의미를 내포함 (연산 可能)
문자열 100은 ‘1’,’0’,’0’ 세 개로 구성되며, 개수나 양의 의미를 내포하지 못함 (연산 不可能)

int() : 정수(Integer)로 변환

변수명 = int() 형태로 작성
정수 이외의 형태의 수와 관련된 정보를 정수(Integer)로 바꿔주는 함수
input 값을 정수로 변환하고자 할때는 변수명 = int(input()) 형태로 사용
 

int(input ()) 예제 - input()유의할 점 예제에서 number로 변환

eng = int(input('영어 점수 : '))
math = int(input('수학 점수 : '))
totalScore = eng + math
print('총점 = ', totalScore) 

💡

input box에 입력된 숫자를 int()함수가 String 자료형이 아닌 Number 자료형으로 변환해줌으로써, + 기호가 String 자료형의 평행배열이 아닌 Number 자료형에서의 산술 연산자로 기능

단, 위와 같이 input()int()를 통해 변환할 때, input box자연어를 입력하면 코드가 실행되지 않고 에러가 발생 (아라비아 숫자 형태 외의 문자 삽입 시)

float() : 실수(Floating-point number)로 변환

💡

변수명 = float() 형태로 작성

정수 이외의 형태의 수와 관련된 정보를 실수(Floating-point number)로 바꿔주는 함수

input 값을 실수로 변환하고자 할때는 변수명 = float(input()) 형태로 사용

a = 1.34
b = 100
c = a+b
d = '안녕'
type (a), type (b), type(c), type(d)

type() 함수를 통해, 지정된 변수의 자료형 유형을 확인할 수 있음

a 는 실수이므로 float

b 는 정수이므로 int

c는 101.34 , 실수이므로 float

d는 문자열이므로 str

float(input()) 예제

import math # math 모듈을 호출
math.pi # math 모듈의 변수 π값
a = float(input('반지름 길이 : '))
area = math.pi * (a**2)
print('원의 넓이 = ', area)

💡

import는 python에 내장된 수학 함수에 대한 module(모듈)을 불러오는 기능

math가 C 표준형 수학연산에 필요한 함수들을 모아둔 모듈

math.pi는 math module에 저장된 원주율 값, 저장된 값을 불러오고 싶으면 math.__ 입력

sqrt = 제곱근, pi = 원주율, e = 자연상수 등

▸원의 넓이 공식인 반지름^2 * 원주율을 파이썬 내장 수학모듈과 input으로 입력하고 float으로 변환한 반지름 변수, Number 자료형의 제곱 산술 연산자를 통해 표현

 


출력

출력 : 프로그램의 명령 수행 결과를 노출하는 것

💡

프로그램에 짜여진 명령문에 입력값을 넣었을 때, 명령 연산 후에 나온 결과값을 보이는 것

이때 노출된 결과값을 출력값이라고 칭함


Python에서의 출력

print() : 문자열 및 변수값 출력을 위한 함수

💡

print() 형태로 작성

지정된 변수값을 출력하고자 할 때는 괄호안에 바로 변수명 입력 print(변수명), 변수로 지정되지 않은 문자열을 출력하고자 할 때는 print(’문자열’)과 같이 괄호 안에 따옴표 사용 후 문자열 입력

문자열과 변수값을 혼용하여 출력문 가능

 

문자열 중간 중간에 변수값이 출력되어야 하는 경우?

💡

▸ 출력하고자 하는 내용에 문자열과 변수값이 혼재되어있을 때, 특히 변수의 종류가 많아질 수록 코드 작성이 번거로워짐

 

cf. “반지름 길이가 변수값1일 때, 원의 넓이는 변수값2 입니다.”

(변수값1=a, 변수값2=area)

⇒ print('반지름 길이가 ', 변수값1 , '일 때, 원의 넓이는 ' , 변수값2 , '입니다.')

 

▸ 문자열 중간에 변수값을 넣어 출력할 최종 문자열을 만든 후 출력하는 문자열 포맷팅 방법 사용

    ▹형식지정자를 활용한 문자열 포맷팅

    ▹f-strings를 활용한 문자열 포맷팅

 

형식지정자 문자열 포맷팅 방법

💡

변수의 값을 문자열 내에 삽입하는 방법

형식지정자 + 문자열 뒤에 ‘%’를 넣고 변수명

여러 개의 변수를 삽입하는 방법

    ▹형식지정자들로 변수값 삽입 위치를 정한 뒤 문자열 뒤에%를 넣고 괄호안에 변수를 출력 순서대로 나열

   

    ▹변수값이 여러 개일 때

print("반지름 길이가 %f일 때, 원의 넓이는 %f입니다" %(변수값1,변수값2))

 

    ▹변수값이 하나일 때

 print("반지름 길이가 3.5일 때, 원의 넓이는 %f입니다" %변수값2)

 

형식지정자의 자료형 선언

형식지정자 자료형
%s 문자열
%c 문자 1개
%d 정수
%f 실수
%% %기호의 출력

    ▹문자 1개 출력시 %s 사용해도 무방함

    ▹형식지정자로서 변수삽입을 원하는 것이 아닌 비율 기호(%) 사용을 원할 때 %% 작성

    ▹위 예시의 경우, aarea 모두 실수형 변수 이므로 두 위치 전부 f를 사용함

형식지정자의 자료형선언 3가지 활용 및 2개 이상의 형식지정자 사용 방법

 

형식지정자 포맷팅의 단점

dorm = "Gryffindor" ; name = "Harry Potter" ; grade = 3
# 변수 선언 시, 한 줄에 정리하고 싶을 때 세미콜론(;) 으로 나눌 수 있음
print("My name is %s, and house is %s. I'm in grade %d now." %(name,dorm,grade))

💡

변수가 여럿인 경우 코드를 보고 출력될 내용을 한눈에 예상하기 어려움

▸ 출력될 문자열 내부만 보고는 형식지정자의 자료형만 파악할 수 있으며, 중복되는 자료형이 있을 경우 어떤 내용이 입력될지는 직관적으로 보기 어려움

▸ 변수가 많아질 수록, 코드 자체의 분량이 f-strings 포맷팅에 비해 길어짐

 

f-strings 문자열 포맷팅 방법

💡

문자열 시작 전에 f 또는 F 입력

▸변수를 넣고 싶은 곳에 중괄호{}로 감싼 변수명, 즉 {변수명} 형태로 입력

    ▹예제1 (f사용)

print(f"반지름 길이가 {a}일 때, 원의 넓이는 {area}입니다")

    ▹예제2 (F사용)

dorm = "Gryffindor" ; name = "Harry Potter" ; grade = 3
print(F"My name is {name}, and house is {dorm}. I'm in grade {grade} now.")

 

▸형식지정자에 비해 직관적이고 비교적 짧게 작성 가능

 

print()의 end 옵션

💡

print()는 출력 후 자동으로 줄 바꿈 시행.

Why? : end 옵션의 기본값이 줄바꿈을 뜻하는 특수문자(’\n’)이기 때문.

▸ 줄바꿈을 원하지 않는다면 end 옵션 값을 변경할 수 있음

 

[1] print()를 연속으로 사용할 경우

print("안녕하세요.")
print("해리포터")
print("입니다")

 

[2] print()의 end옵션 값을 변경한 경우

print("안녕하세요.")
print("해리포터", end='')
print("입니다")