输出和输入
从你写下第一行代码开始,你就会用到这两个工具:print() 在终端显示值,input() 从用户那里获取文本。它们很简单,但了解它们的行为可以让你在早期避免一些意外。
Python 如何运行你的代码
Python 从上到下逐行运行你的代码,严格按照你编写的顺序。不会跳来跳去。你写的顺序就是它们运行的顺序。永远如此。
city = "北京"
print(city)
print("Population: 14 million")city 首先被赋值。第一个 print 运行。第二个 print 运行。每次都按这个顺序。
这很重要,因为你不能在赋值之前使用变量。Python 还没有见过它,会引发错误:
print(country) # NameError: country is not defined yet
country = "中国"随着你的程序越来越大,请记住这一点:你使用的任何东西都必须在使用之前定义。
打印输出
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("Loading", end="")
print("...")
# Loading...
print("one", end=" | ")
print("two", end=" | ")
print("three")
# one | two | three使用 f-strings 格式化输出
构建消息最简洁的方式是 f-strings。在开引号前加 f,然后用花括号包裹任何变量或表达式。Python 会在运行时填入。你可以在 {} 里放任何值、计算或方法调用。
name = "小明"
score = 980
# concatenation: clunky, requires str() for numbers
print("Player: " + name + ", Score: " + str(score))
# f-string: readable, no manual conversion
print(f"Player: {name}, Score: {score}")你可以在 {} 内放任何表达式:算术、方法调用、格式规范:
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.7%
print(f"{count:,}") # 1,234,567
print(f"{label:>12}") # " revenue":.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。如何正确处理这一点将在文件和异常章节中介绍。
实际应用
一个根据用户输入个性化的测验:
name = input("What's your name? ")
subject = input("Which subject? ")
print(f"Okay, {name}. Starting your {subject} quiz.")
print("Good luck!")两个输入都以字符串形式返回,直接进入 f-strings。不需要转换,因为你把它们当作文本使用,而不是数字。

