输出和输入
你从写下的第一行代码就会用到两个工具:print() 在终端中显示数值,input() 从用户那里获取文本。它们很简单,但了解它们的工作方式能让你避免一些早期的意外。
Python 如何运行你的代码
Python 从上到下,一次一行,按照你写的顺序执行你的代码。没有跳跃。你写东西的顺序就是它们运行的顺序。总是这样。
city = "北京"
print(city)
print("人口:2,171 万")首先给 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) # 名字: 小明
print("2024", "01", "15", sep="-") # 2024-01-15
print("a", "b", "c", sep=", ") # a, b, c控制行尾
每个 print() 调用默认以换行符结尾,所以下一个输出从新的一行开始。用 end 改变这一点。设置 end="" 让下一个 print 继续在同一行:
print("加载中", end="")
print("...")
# 加载中...
print("一", end=" | ")
print("二", end=" | ")
print("三")
# 一 | 二 | 三print() 把你给它的任何东西变成文本并显示出来。给它传几个用逗号分隔的东西,你会在它们之间得到一个空格,用 sep 改变这个。每个 print 在最后会换到新的一行;end="" 让下一个保持在同一行。 用 f-strings 格式化输出
构建消息最干净的方式是 f-strings。在开引号前放 f,然后在大括号中包裹任何变量或表达式。Python 在运行时填入它。你可以在 {} 里放任何值、计算或方法调用。
name = "小明"
score = 980
# 连接:笨重,对数字需要 str()
print("玩家:" + name + ",分数:" + str(score))
# f-string:可读,无需手工转换
print(f"玩家:{name},分数:{score}")你可以在 {} 里放任何表达式:算术、方法调用(比如 .upper(),在字符串章节全面覆盖)、格式规范:
price = 49.99
tax = 0.2
total = price * (1 + tax)
print(f"总额:{total:.2f}") # 总额:59.99
print(f"名字:{name.upper()}") # 名字:小明
print(f"2 + 2 = {2 + 2}") # 2 + 2 = 4冒号后的格式规范控制值如何显示:
ratio = 0.8765
count = 1234567
label = "收入"
print(f"{ratio:.1%}") # 87.6%
print(f"{count:,}") # 1,234,567
print(f"{label:>12}") # " 收入":.2f 意思是"两位小数"。你会不断用到它来处理价格和测量值。其他的一切在你需要时就在那里。主要的事:任何东西都可以在 {} 里,不只是变量名。
f 并在 {} 中包裹任何东西:一个变量、一个和,甚至一个方法调用。冒号加上格式化,比如 :.2f 表示两位小数。比用 + 拼接字符串干净得多。 从用户获取输入
input() 暂停你的程序并等待用户输入一些东西。无论他们输入什么(并在其上按 Enter),都会作为返回值回来。括号中的字符串是用户看到的提示。
name = input("你叫什么名字?")
print(f"你好,{name}!")input() 总是返回一个字符串,无论用户输入什么。 输入 42 你会得到 "42",不是数字 42。要用它做算术,显式转换:
age = int(input("你今年多少岁?"))
print(f"十年后你会是 {age + 10} 岁。")如果用户输入不能被转换的东西怎么办?Python 抛出 ValueError。适当的处理方式在文件和异常章节中覆盖。
input() 显示你的提示,等待一行,然后总是把它作为 string 返回,即使他们输入了数字。需要数字?在输入时用 int() 或 float() 自己转换,然后继续使用正确的类型。 实战
一个从用户输入个性化自己的测验:
name = input("你叫什么名字?")
subject = input("哪个科目?")
print(f"好的,{name}。开始你的 {subject} 测验。")
print("祝你好运!")两个输入都作为字符串回来并直接进入 f-strings。不需要转换因为你是把它们作为文本使用,不是数字。

