출력과 입력
프로그래밍을 시작할 때부터 사용하게 될 두 가지 도구가 있습니다. print()는 터미널에 값을 표시하고, input()은 사용자로부터 텍스트를 받습니다. 간단하지만, 이들이 어떻게 동작하는지 알면 처음에 겪을 수 있는 많은 혼란을 피할 수 있습니다.
Python이 코드를 실행하는 방식
Python은 코드를 위에서 아래로, 한 줄씩, 정확히 작성한 순서대로 실행합니다. 건너뛰는 일은 없습니다. 작성한 순서가 실행 순서입니다. 항상 그렇습니다.
city = "Seoul"
print(city)
print("Population: 10 million")먼저 city에 값이 할당됩니다. 그다음 첫 번째 print가 실행됩니다. 그다음 두 번째 print가 실행됩니다. 매번 같은 순서입니다.
이것이 중요한 이유는 변수를 할당하기 전에 사용할 수 없기 때문입니다. Python이 아직 그 변수를 보지 못했으므로 에러가 발생합니다.
print(country) # NameError: country가 아직 정의되지 않았습니다
country = "Korea"프로그램이 커질수록 이것을 명심하세요. 사용하는 모든 것은 사용하기 전에 정의되어야 합니다.
NameError가 발생한다는 것입니다. 건너뛰기도 없고, 파일 전체를 먼저 읽지도 않습니다. 출력하기
print()는 Python이 당신과 소통하는 방식입니다. 어떤 값을 전달하면 그 값을 표시합니다. 자동으로 무엇이든 텍스트로 변환합니다.
print("Hello") # Hello
print(42) # 42
print(3.14) # 3.14
print(True) # True여러 값 출력하기
쉼표로 구분하여 여러 값을 한 번에 출력할 수 있습니다. Python은 기본적으로 그들 사이에 공백을 넣습니다. sep으로 구분자를 바꿀 수 있습니다.
name = "Alice"
age = 28
print(name, age) # Alice 28
print("Name:", name) # Name: Alice
print("2024", "01", "15", sep="-") # 2024-01-15
print("a", "b", "c", sep=", ") # a, b, c줄 끝 제어하기
각 print() 호출은 기본적으로 줄바꿈으로 끝나므로 다음 출력은 새 줄에서 시작됩니다. end로 이를 바꿀 수 있습니다. end=""로 설정하면 다음 print가 같은 줄을 계속 사용합니다.
print("Loading", end="")
print("...")
# Loading...
print("one", end=" | ")
print("two", end=" | ")
print("three")
# one | two | threeprint()는 주는 것을 무엇이든 텍스트로 바꾸고 표시합니다. 쉼표로 구분된 여러 것을 전달하면 그들 사이에 공백을 얻습니다. sep으로 바꾸세요. 모든 print는 끝에 새 줄로 떨어집니다. end=""는 다음 것을 같은 줄에 유지합니다. f-string으로 출력 형식화하기
메시지를 만드는 가장 깔끔한 방식은 f-string입니다. 열린 따옴표 앞에 f를 붙이고, 모든 변수나 식을 중괄호로 감싸세요. Python이 런타임에 그것을 채워줍니다. {}의 안에는 어떤 값, 계산, 메서드 호출이든 넣을 수 있습니다.
name = "Alice"
score = 980
# 연결: 투박함, 숫자에 str() 필요
print("Player: " + name + ", Score: " + str(score))
# f-string: 읽기 쉬움, 수동 변환 불필요
print(f"Player: {name}, Score: {score}"){}의 안에는 어떤 식이든 넣을 수 있습니다. 산술, 메서드 호출(.upper() 같은, 문자열 장에서 자세히 다룸), 형식 사양:
price = 49.99
tax = 0.2
total = price * (1 + tax)
print(f"Total: {total:.2f}") # Total: 59.99
print(f"Name: {name.upper()}") # Name: ALICE
print(f"2 + 2 = {2 + 2}") # 2 + 2 = 4:뒤의 형식 사양은 값이 표시되는 방식을 제어합니다.
ratio = 0.8765
count = 1234567
label = "revenue"
print(f"{ratio:.1%}") # 87.6%
print(f"{count:,}") # 1,234,567
print(f"{label:>12}") # " revenue":.2f는 "소수 두 자리"를 의미합니다. 가격과 측정에 계속 사용할 겁니다. 나머지는 필요할 때 있습니다. 주요 점은 변수 이름만이 아니라 어떤 것이든 {}의 안에 들어갈 수 있다는 것입니다.
f를 붙이고 뭐든 {}로 감싸세요. 변수, 합, 메서드 호출까지도요. 콜론은 형식을 추가합니다. :.2f 같은 것으로 소수 두 자리를 만들 수 있습니다. +로 문자열을 붙이는 것보다 훨씬 깔끔합니다. 사용자로부터 입력받기
input()은 프로그램을 일시 중지하고 사용자가 뭔가 입력할 때까지 기다립니다. 그들이 입력하고 Enter를 누른 것이 반환 값이 됩니다. 괄호 안의 문자열은 사용자가 보는 프롬프트입니다.
name = input("What's your name? ")
print(f"Hello, {name}!")input()은 사용자가 뭘 입력하든 항상 문자열을 반환합니다. 42를 입력하면 숫자 42가 아니라 "42"를 얻습니다. 그것으로 산술을 하려면 명시적으로 변환하세요.
age = int(input("How old are you? "))
print(f"In ten years you'll be {age + 10}.")사용자가 변환할 수 없는 걸 입력하면? Python은 ValueError를 발생시킵니다. 이를 제대로 처리하는 것은 파일과 예외 장에서 다룹니다.
input()은 프롬프트를 보여주고, 줄을 기다리고, 항상 숫자를 입력했어도 string으로 반환합니다. 숫자가 필요하세요? int()나 float()으로 들어올 때 변환해서 올바른 타입으로 계속하세요. 실제로
사용자 입력으로 자신을 개인화하는 퀴즈:
name = input("What's your name? ")
subject = input("Which subject? ")
print(f"Okay, {name}. Starting your {subject} quiz.")
print("Good luck!")두 입력 모두 문자열로 돌아와 f-string에 바로 들어갑니다. 숫자가 아니라 텍스트로 사용하고 있으므로 변환이 필요 없습니다.

