大家好,我是 MuSen,一个爱分享、带你轻松玩转编程的引路人。
在前面的课程中,我们学了变量、数据类型、字符串和列表。但到目前为止,我们的程序好像都是个“闷葫芦”——我们在代码里写死什么,它就默默地运行什么。
这怎么行呢?一个真正的好程序,必须得学会“倾听用户的声音”并且“做出漂亮的回应”。今天,我们就来学习 Python 中沟通的桥梁:输入(Input)与输出(Output)。
准备好让你的程序开口说话了吗?我们发车!🚀
3.1 输入 (Input):让程序“听”你说话 👂
如果你想让程序暂停下来,等用户在键盘上敲点东西,然后再继续往下执行,那你就需要请出 input() 函数了。
它的语法非常简单: 变量名 = input("给用户的提示信息:")
# 此时程序会停下来,屏幕上显示提示,静静等待你的输入...
name = input("请输入您的姓名:")
# 当你敲完名字按下【回车键】,程序才会继续执行
print("欢迎你," + name)
💣 MuSen 的究极避坑警告:被伪装的数字! 这是无数初学者(甚至部分老手)最容易栽跟头的地方,面试也极其爱考!
记住这句铁律:
input()接收到的所有东西,统统都是字符串 (str)!假设你写了这行代码:
age = input("请输入年龄:")。 哪怕用户在键盘上老老实实地输入了数字18,Python 也会在底层悄悄把它变成字符串"18"。 如果你拿到这个age之后直接去搞数学计算,比如age + 1,程序当场就会原地爆炸报错!💥✅ 正确解法(强制类型转换): 如果你需要用户输入数字,一定要在外面套一层强制转换!
# 把它脱掉字符串的外衣,变成真正的整数! age = int(input("请输入年龄:")) print(f"明年你就 {age + 1} 岁啦!")
3.2 输出 (Print):程序向你喊话 🗣️
普通的 print() 我们已经用过很多次了,但它其实还隐藏着几招非常好用的独门秘籍。
1)一次输出多个值
如果你想打印好几个变量,完全不需要麻烦地用加号去拼接(拼接还容易报错)。直接用逗号隔开,Python 在打印时会自动帮你加上空格!
name = "MuSen"
age = 18
print("大佬", name, "今年", age, "岁")
# 输出:大佬 MuSen 今年 18 岁
2)控制结尾符号:end 参数
默认情况下,每次调用 print() 打印完,Python 都会好心地在末尾悄悄加上一个换行符 \n。这就是为什么你写两个 print 它们会分两行显示。 如果你不想让它换行怎么办?修改 end 参数!
print("Hello", end="") # 用空字符串作为结尾,不换行!
print("World") # 最终输出会连在一起:HelloWorld
print("使用回车换行结尾", end="\n") # 这是 print 的默认行为
3.3 花式排版 (Formatting):把输出打扮得漂漂亮亮 🎨
有时候我们需要给句子“填空”,比如“我叫___,今年___岁”。Python 提供了三种世代的格式化工具,我们一次性拿下!
🥇 第一代:% 占位符(老派风格)
这是从 C 语言借过来的老古董,虽然老,但在很多老代码里依然能看到。 你要先用 %加字母 占坑,然后在字符串外面再按顺序填坑。
%d:专门占位十进制整数。%f:专门占位浮点数(小数)。比如%.2f就代表保留两位小数。%s:专门占位字符串。
int1 = 10
float1 = 3.14159
str1 = "int1 = %d, float1 = %.2f" % (int1, float1)
print(str1) # 输出: int1 = 10, float1 = 3.14
🥈 第二代:.format() 方法(功能强大)
相比 %,.format() 聪明多了,它不需要你死记硬背数据类型,直接扔一对大括号 {} 进去当坑位。
# 方式1:默认顺序,一人一个坑
str2 = "我叫{}, 今年{}岁".format("MuSen", 18)
# 方式2:指定位置(可以通过编号打乱顺序)
str2 = "冠军是{1}, 亚军是{0}".format("张三", "李四") # 李四是冠军!
# 方式3:设置专属名字(不用数位置了)
str2 = "{name}爱吃{food}".format(name="MuSen", food="排骨")
✨ 超硬核:数字的变态排版 .format() 还支持对数字进行非常精细的排版,比如财务报表上经常见到的格式:
money = 31415.9
# {:*^20,.2f} 这段火星文是什么意思?听我给你拆解:
# * 代表:空白处用星号填充(不写默认是用空格填)
# ^ 代表:内容居中对齐(<是居左,>是居右)
# 20 代表:总共要占满 20 个字符的宽度
# , 代表:加入千位分隔符
# .2f 代表:小数点后保留 2 位
print("{:*^20,.2f}".format(money))
# 输出效果: *****31,415.90******
🏆 第三代:f-string(现在的绝对王者!)
这是 Python 3.6+ 推出的终极杀器!它是目前写起来最优雅、运行速度最快的方式!你一定会爱上它。 你只需要在字符串开头的引号前面加上一个字母 f,然后直接把变量名塞进 {} 里就行了:
int1 = 10
float1 = 3.14159
print(f"int1 = {int1}, float1 = {float1}")
😎 MuSen 传授:Python 3.8 的调试绝招 (=) 在开发调试的时候,你想打印变量名和它的值,可以在 f-string 的括号里加个 =,超级省事:
print(f"{int1=}, {float1=}")
# 极简!直接输出: int1=10, float1=3.14159
❓ 灵魂拷问:如果我偏想打印大括号
{}本身咋办? 在使用.format()或者f-string时,大括号被当成了填空符号。如果你只想把它当普通的字符打印出来,记住一个词:负负得正! 连写两层大括号{{}},它就会被转义成普通的大括号了。print(f"{{大括号转义}}") # 输出结果: {大括号转义}
写在最后
今天我们一起打通了程序的任督二脉——输入与输出。 学会了 input(),你的程序就不再是个死板的脚本,而是可以和用户进行交流的机器人; 学会了 f-string 和各种高级格式化,你的程序吐出来的数据就能像精心排版过的报表一样漂亮。
请一定要去电脑上把 input() 的那个“全转成字符串”的坑自己踩一遍,只有报错过,你才会刻骨铭心!
我是 MuSen,我们会点儿技术,有点儿意思。准备好进入下一关了吗?咱们下期见!👋