출력과 입력

처음 작성하는 코드부터 사용하게 될 두 가지 도구: print()는 터미널에 값을 표시하고, input()은 사용자로부터 텍스트를 받습니다. 간단하지만, 이들의 동작 방식을 이해하면 초기에 마주칠 수 있는 여러 문제를 피할 수 있습니다.
Python이 코드를 실행하는 방식
Python은 코드를 위에서 아래로, 한 번에 한 줄씩, 당신이 작성한 순서 그대로 실행합니다. 건너뛰는 일은 없습니다. 작성한 순서가 실행 순서입니다. 항상.
city = "서울"
print(city)
print("인구: 1,000만 명")먼저 city가 할당됩니다. 첫 번째 print가 실행됩니다. 두 번째 print가 실행됩니다. 매번 그 순서대로입니다.
이것이 중요한 이유는 변수를 할당하기 전에 사용할 수 없기 때문입니다. Python이 아직 그것을 보지 못했고 에러를 발생시킵니다:
print(country) # NameError: country가 아직 정의되지 않음
country = "일본"프로그램이 커질 때 이를 기억하세요: 사용하는 모든 것은 사용하기 전에 정의되어야 합니다.
NameError가 발생합니다. 건너뛸 수 없고, 파일을 먼저 읽지 않습니다. 출력 인쇄하기
print()는 Python이 당신과 대화하는 방식입니다. 모든 값을 전달하면 그 값을 표시합니다. 자동으로 무엇이든 텍스트로 변환합니다.
print("Hello") # Hello
print(42) # 42
print(3.14) # 3.14
print(True) # True여러 값
쉼표로 구분하여 한 번에 여러 값을 인쇄할 수 있습니다. Python은 기본적으로 그들 사이에 공백을 넣습니다. sep으로 구분자를 변경하세요:
name = "민준"
age = 28
print(name, age) # 민준 28
print("Name:", name) # Name: 민준
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 = "민준"
score = 980
# 연결: 어색하며, 수 변환을 위해 str() 필요
print("Player: " + name + ", Score: " + str(score))
# f-string: 읽기 쉽고, 수동 변환 없음
print(f"Player: {name}, Score: {score}"){} 안에 모든 식을 넣을 수 있습니다: 산술, 메서드 호출(.upper() 같은, Strings 장에서 완전히 다룸), 형식 지정자:
price = 49.99
tax = 0.2
total = price * (1 + tax)
print(f"Total: {total:.2f}") # Total: 59.99
print(f"Name: {name.upper()}") # Name: 민준
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를 발생시킵니다. 이를 올바르게 처리하는 방법은 Files and exceptions 장에서 다룹니다.
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에 직접 들어갑니다. 그들을 텍스트가 아닌 숫자로 사용하고 있기 때문에 변환이 필요하지 않습니다.

