파이썬 교재 · 2편 / 27편

파이썬 첫 프로그램 — input·print·f-string

hello.py 세 줄 안에 들어있는 다섯 가지 명령. 한 줄씩 해부합니다.

입문읽는 시간 6분2026-05-13
hello.py 세 줄 코드와 실행 결과를 보여주는 터미널 화면

1편 끝에서 만든 hello.py 세 줄. 짧은 코드지만 입문자가 평생 쓸 다섯 가지 — input·변수·print·f-string·내장 함수 — 가 압축돼 있습니다. 비유하자면 자전거 핸들·페달·체인·브레이크·안장이 한 번에 들어있는 셈. 이 다섯 가지를 못 떼면 3편(자료형) 부터 자꾸 막혀요.

2편은 그래서 코드를 한 줄씩 해부하고, 마지막에 초보자가 자주 빠지는 함정 4가지를 정리합니다. 다 읽으면 본인이 직접 입력받아 인사하는 프로그램·이름 글자 수에 따라 다른 메시지 내는 프로그램을 변형해 만들 수 있습니다.

# hello.py
name = input("이름을 입력하세요: ")
print(f"안녕하세요, {name}님!")
print(f"이름 글자 수: {len(name)}")

첫 줄 — input 으로 사용자에게 묻기

첫 줄을 왼쪽부터 오른쪽으로 읽어봅니다. name변수 이름입니다. 빈 상자를 하나 만들고 "name" 이라는 이름표를 붙인다고 생각하세요. = 는 수학의 등호가 아니라 "오른쪽 결과를 왼쪽 상자에 넣어라" 라는 할당 연산자입니다. input(...)내장 함수 호출 — 괄호 안 문자열을 화면에 보여주고, 사용자가 Enter 를 누를 때까지 기다린 다음, 입력한 문자열을 돌려줍니다.

그래서 첫 줄 전체의 의미는: "화면에 '이름을 입력하세요:' 를 띄우고, 사용자 입력을 받아, 그 값을 name 상자에 넣어라."

📌 변수 이름의 4가지 규칙

① 영문자·숫자·언더스코어(_)만 가능 — user_name ✓ / user-name

② 숫자로 시작 금지 — name1 ✓ / 1name

③ 예약어(if, for, class, print) 금지

④ 관례상 소문자+언더스코어 (snake_case). userName 보다 user_name.

한국어 변수명 이름 = "준성" 도 파이썬 3 에서는 동작은 합니다. 하지만 라이브러리·동료 코드와 섞이는 순간 깨지는 위험이 커서 실무에서 한글 변수명은 안 씁니다. 학습 때부터 영문 snake_case 습관을.

둘째 줄 — print 와 f-string 의 만남

print(f"안녕하세요, {name}님!"). 가장 자주 쓰는 패턴이라 여기서 두 가지를 동시에 배웁니다.

print(...) 는 화면에 값을 그대로 출력하고 줄바꿈합니다. 괄호 안에 무엇을 넣든 (숫자·문자열·계산식·다른 함수의 결과) 받아서 찍어요.

문자열 앞의 ff-string(formatted string) 의 신호입니다. f 가 붙은 문자열 안에서는 { } 사이에 변수나 식을 넣을 수 있어요. 파이썬이 그 자리를 변수의 현재 값으로 자동 치환합니다.

name = "준성"
print(f"안녕, {name}!")       # 안녕, 준성!
print(f"내년: {2026 + 1}년")   # 내년: 2027년
print(f"3 곱하기 5 = {3*5}")   # 3 곱하기 5 = 15

옛날 파이썬에는 "%s 님" % name 이나 "{}님".format(name) 같은 방법도 있었는데, f-string(3.6+) 이 나온 뒤로는 거의 모두 f-string 만 씁니다. 짧고 읽기 쉬워서요. 옛 코드를 봐야 할 때만 두 방법도 알아두면 됩니다.

셋째 줄 — 내장 함수 len 으로 글자 수 세기

print(f"이름 글자 수: {len(name)}"). 새로 등장한 게 len(...) 인데, 이건 내장 함수(built-in) 중 하나입니다. 별도 설치·import 없이 그냥 부르면 동작해요. 파이썬은 70여 개의 내장 함수를 기본 제공합니다 — print·input·len·range·sum·max·min·int·str·list 같은 것들. 이들이 입문 2주를 책임집니다.

len 은 "길이" 의 length. 문자열을 넣으면 글자 수, 리스트를 넣으면 항목 수, 딕셔너리를 넣으면 키 개수를 돌려줍니다.

len("Hello")        # 5
len("안녕하세요")     # 5  (한 글자 1로 계산)
len([1, 2, 3, 4])   # 4  (리스트 항목 수)
len("")             # 0  (빈 문자열)

f-string 의 { } 안에는 변수뿐 아니라 식·함수 호출 결과도 들어갈 수 있다는 게 셋째 줄의 진짜 포인트. {len(name)} 처럼 함수 호출을 통째로 박을 수 있어 보조 변수를 매번 만들 필요가 없어요.

초보가 자주 빠지는 함정 4가지

함정증상원인·해결
들여쓰기IndentationError탭과 스페이스 섞임 또는 함수 안에서 어긋남. VS Code 에서 Ctrl+Shift+P → "Convert Indentation to Spaces"
따옴표 짝SyntaxError"안녕' 처럼 큰따옴표·작은따옴표 섞임. 한 문자열 안에서는 같은 종류로 통일
괄호 누락SyntaxError 또는 의도와 다른 동작print "hi" 가 아니라 print("hi"). 파이썬 2 시절 문법은 안 먹습니다
input 결과 자동 문자열TypeError: can only concatenate strinput() 결과는 항상 문자열. 숫자로 쓰려면 int(input()) 또는 float(input()) 로 변환

특히 마지막 함정이 입문자 1번 함정입니다. age = input("나이: ") 다음에 age + 1 을 하면 TypeError. "30" + 1 은 안 되거든요. age = int(input("나이: ")) 처럼 변환을 같이 합니다.

⚠️ 에러 메시지는 친구다. 빨간 글씨가 떠도 당황 X. 마지막 줄에 에러 종류(예: NameError: name 'nmae' is not defined)가 적혀 있어요. 99% 의 답은 "에러 메시지를 검색창에 그대로 붙여넣기" 하면 5초 만에 나옵니다.

마무리 — 직접 변형해보기

책으로 읽기만 하면 손이 안 따라옵니다. hello.py 를 복사해 hello2.py 로 만들고, 직접 변형해보세요. 세 가지 미션:

  1. "이름" 말고 "좋아하는 음식" 을 묻고, 글자 수 대신 "{음식}을 좋아하시는군요!" 출력
  2. 이름과 나이를 둘 다 입력받아 "{name}님은 {age}살, 내년엔 {age+1}살" 출력 (힌트: int() 필요)
  3. 이름 글자 수가 3 이상이면 "이름이 깁니다" 출력 (힌트: if 문은 3편에서, 일단 시도해보고 막혀도 OK)

막혔다면 에러 메시지를 그대로 메모해두세요. 3편 시작에서 풀이도 같이 다룹니다.

다음 편 미리보기

3편 — "파이썬 변수와 자료형": 문자열·정수·실수·불리언이 무엇이 다른지, type() 으로 어떻게 확인하는지, 변환은 어떻게 하는지.

📚 27편 파이썬 교재 시리즈 — 2/27편
← 1편 "파이썬이란 무엇인가" · 다음: 3편 "파이썬 변수와 자료형"

© 2026 주나이테크(주) @JUNAITECH