Python的输入输出:让代码和世界对话的“嘴巴”和“耳朵”
目录
方法三:f-string(现代王者,Python 3.6+)
嘿,朋友!想象一下,你写了一段超级厉害的Python代码,它能计算圆周率后一万位、能模拟黑洞碰撞、能预测明天股票涨跌——但是,它既不能告诉任何人它算出了什么,也听不见用户想要什么。
这就像你造了一台能飞到火星的火箭,却忘了给它装通讯设备——它再厉害,也只是一堆沉默的废铁。
在Python的世界里,input()和print()就是你的代码和外界对话的嘴巴和耳朵。今天,咱们就来好好聊聊这对“黄金搭档”,看看它们是怎么让死气沉沉的代码“活”起来的。
一、print():代码的“嘴巴”,负责唠叨
1.1 最简单的唠叨:打个招呼
python
print("Hello, World!")
这是每一个程序员的“成人礼”。当你看到终端里蹦出这行字,意味着你和Python的“对话”正式开始了。
print()的职责很简单:把它拿到的东西,显示到屏幕上让你看见。就像你养了一只鹦鹉,你教它说什么,它就说什么。
1.2 可以唠叨多个东西
python
name = "小明"
age = 18
print("我叫", name, "今年", age, "岁")
# 输出:我叫 小明 今年 18 岁
print()可以一次接收多个参数,用逗号隔开。它会自动在每两个参数之间加一个空格,最后加一个换行。
生动类比:就像你妈喊你吃饭——“小明(空格)过来(空格)吃饭(换行)!”
1.3 不想换行?sep和end来帮忙
python
# 默认是换行的
print("第一行")
print("第二行")
# 输出:
# 第一行
# 第二行
# 不想换行?改end参数
print("第一行", end="---")
print("第二行", end="!!!")
# 输出:第一行---第二行!!!
# 不想用空格隔开?改sep参数
print("苹果", "香蕉", "橘子", sep="🍎")
# 输出:苹果🍎香蕉🍎橘子
-
end:控制打印完末尾加什么(默认是换行符
\n) -
sep:控制多个参数之间用什么隔开(默认是空格)
生动类比:
-
end就像你说话说完之后的句号——可以是句号、感叹号,或者干脆不说话(
end="") -
sep就像你列举东西时的顿号——可以是“和”、“以及”,或者像上面那样用emoji
1.4 格式化输出:让字符串更好看
有时候你想把变量塞进字符串中间,直接拼接太麻烦。Python给你准备了三种“高级缝合术”:
方法一:%格式化(老派作风)
python
name = "老王"
age = 45
print("我叫%s,今年%d岁" % (name, age))
# 输出:我叫老王,今年45岁
-
%s:字符串占位符 -
%d:整数占位符 -
%f:浮点数占位符
生动类比:这就像你写填空卷子,先挖好坑(%s),再往坑里填东西。
方法二:format()方法(中坚力量)
python
print("我叫{},今年{}岁".format(name, age))
# 输出:我叫老王,今年45岁
# 还可以指定顺序
print("我叫{1},今年{0}岁".format(age, name))
# 输出:我叫老王,今年45岁(注意顺序换了)
# 还可以给变量起名
print("我叫{name},今年{age}岁".format(name="老王", age=45))
生动类比:这就像你给每个坑贴了标签,填东西的时候不用记顺序,直接喊名字就行。
方法三:f-string(现代王者,Python 3.6+)
python
print(f"我叫{name},今年{age}岁")
# 输出:我叫老王,今年45岁
# 里面还能直接做计算
print(f"明年我就{age + 1}岁了")
# 输出:明年我就46岁了
# 还能调用函数
import math
print(f"圆周率是{math.pi:.2f}")
# 输出:圆周率是3.14
生动类比:这就像你直接在说话的时候,把变量“嵌”进句子里,不用任何中间商赚差价。
记住:f-string是现在最推荐的方式,简单、直观、强大,还能在里面写表达式。以后写格式化输出,优先用这个!
二、input():代码的“耳朵”,负责听用户说话
2.1 最简单的倾听
python
name = input("请输入你的名字:")
print(f"你好,{name}!")
运行这段代码,你会看到屏幕上出现一行字:“请输入你的名字:”,然后程序就停在那里等你输入。你输入完按回车,它才继续往下走。
生动类比:就像你妈问你“中午想吃什么?”,然后拿着锅铲站在旁边,你不回答她就不下锅。
2.2 input()的重要特性:返回的都是字符串
这是初学者最容易踩的坑!
python
age = input("请输入你的年龄:")
print(f"明年你就{age + 1}岁了") # 报错!
报错了!为什么?因为 input() 返回的永远都是字符串。你输入“18”,它拿到的是字符串 "18",不是数字 18。
字符串 "18" + 1?Python懵了:“亲,字符串只能加字符串,不能加数字啊!”
解决方案:类型转换
python
age = input("请输入你的年龄:")
age = int(age) # 把字符串转成整数
print(f"明年你就{age + 1}岁了") # 完美运行!
# 或者一步到位
age = int(input("请输入你的年龄:"))
常见的类型转换函数:
-
int():转整数 -
float():转浮点数 -
str():转字符串(其实不用转,本来就是)
2.3 多个输入怎么处理?
如果你想让用户一次输入多个值,有几种方法:
方法一:split()分割
python
# 用户输入:小明 18 男
data = input("请输入姓名、年龄、性别(用空格隔开):")
name, age, gender = data.split() # split()默认按空格分割
age = int(age)
print(f"姓名:{name},年龄:{age},性别:{gender}")
方法二:用特定分隔符
python
# 用户输入:小明,18,男
data = input("请输入姓名,年龄,性别(用逗号隔开):")
name, age, gender = data.split(",")
age = int(age)
生动类比:这就像你给用户发了一个填空题,让他一次填完多个空,你用split()这个“剪刀”把答案剪开,分别装进不同的变量里。
三、输入输出实战:从“哑巴”到“话痨”
3.1 实战1:计算器(基础版)
python
print("=== 简易计算器 ===")
num1 = float(input("请输入第一个数字:"))
num2 = float(input("请输入第二个数字:"))
operator = input("请输入运算符(+、-、*、/):")
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 == 0:
print("错误:除数不能为0!")
result = None
else:
result = num1 / num2
else:
print("不支持的运算符!")
result = None
if result is not None:
print(f"计算结果:{num1} {operator} {num2} = {result}")
3.2 实战2:猜数字游戏(交互版)
python
import random
print("=== 猜数字游戏 ===")
print("我已经想好了一个1-100之间的数字,你来猜猜看!")
secret = random.randint(1, 100)
guesses = 0
while True:
guess = input("请输入你的猜测(输入q退出):")
# 用户想退出
if guess.lower() == 'q':
print(f"这就走了?答案是{secret}哦")
break
# 检查是不是数字
if not guess.isdigit():
print("请输入数字好吗?")
continue
guess = int(guess)
guesses += 1
if guess < secret:
print("猜小了,再大一点")
elif guess > secret:
print("猜大了,再小一点")
else:
print(f"🎉 恭喜你猜对了!答案是{secret}")
print(f"你一共猜了{guesses}次")
break
3.3 实战3:用户注册模拟(稍微正式一点)
python
print("=== 欢迎注册 ===")
# 用户名:不能为空
while True:
username = input("请输入用户名:").strip() # strip()去掉首尾空格
if username:
break
print("用户名不能为空!")
# 密码:长度至少6位
while True:
password = input("请输入密码(至少6位):")
if len(password) >= 6:
break
print("密码太短了!")
# 邮箱:简单验证
while True:
email = input("请输入邮箱:")
if "@" in email and "." in email:
break
print("邮箱格式不对,需要包含@和.")
# 年龄:必须是数字
while True:
age_input = input("请输入年龄:")
if age_input.isdigit():
age = int(age_input)
break
print("请输入数字!")
print("\n=== 注册成功 ===")
print(f"用户名:{username}")
print(f"密码:{'*' * len(password)}") # 密码用星号显示
print(f"邮箱:{email}")
print(f"年龄:{age}")
四、输入输出的“隐藏技能”
4.1 print()的重定向:不打印到屏幕,打印到文件
python
with open("output.txt", "w") as f:
print("这行文字不会显示在屏幕", file=f)
print("而是会写到output.txt文件里", file=f)
file参数可以指定print()的输出目标——默认是屏幕,但你可以改成任何文件。
4.2 输入密码时隐藏显示
input()有个缺点:你输入密码的时候,旁边的人能看见。这时候可以用 getpass 模块:
python
import getpass
password = getpass.getpass("请输入密码:") # 输入时屏幕上什么都不显示
print("密码已输入")
注意:这个在IDE里可能不生效,需要在真正的终端里运行。
4.3 多行输入
有时候用户想输入多行内容(比如写一封信),可以用循环:
python
print("请输入内容(输入空行结束):")
lines = []
while True:
line = input()
if line == "":
break
lines.append(line)
print("\n你输入的内容是:")
for line in lines:
print(line)
五、初学者常踩的坑(帮你提前避开)
坑1:忘了input()返回的是字符串
python
# 错误
age = input("年龄:")
if age > 18: # 报错!字符串不能和数字比
print("成年")
# 正确
age = int(input("年龄:"))
if age > 18:
print("成年")
坑2:split()的时候数量对不上
python
data = input("输入三个数:")
a, b, c = data.split() # 如果用户只输入了两个数,就报错
# 改进:先分割,再判断长度
parts = data.split()
if len(parts) == 3:
a, b, c = parts
else:
print("输入格式不对!")
坑3:忘了strip()处理多余空格
python
name = input("请输入姓名:")
if name == "admin": # 如果用户输入了" admin "(带空格),就匹配不上
print("欢迎管理员")
# 改进
name = input("请输入姓名:").strip()
坑4:f-string里的大括号冲突
python
# 如果你想在f-string里输出大括号本身
print(f"{{ 这是大括号 }}") # 输出:{ 这是大括号 }
# 两个大括号会转义成一个大括号
六、总结:让代码会说话,会听话
| 函数 | 作用 | 要点 |
|---|---|---|
print() | 输出到屏幕 | 可以加sep、end,推荐用f-string格式化 |
input() | 从键盘获取输入 | 永远返回字符串,记得类型转换 |
int()/float() | 类型转换 | 把字符串转成数字 |
split() | 分割字符串 | 处理多个输入 |
strip() | 去掉首尾空格 | 清理用户输入 |
有了print()和input(),你的Python程序就不再是“哑巴”,也不是“聋子”。它可以:
-
问用户问题(
input) -
听用户回答(
input的返回值) -
根据回答做处理(逻辑判断)
-
告诉用户结果(
print)
这就是所谓的交互式程序——代码和人的对话。
下次你写程序的时候,记得给你的代码装上这对“嘴巴和耳朵”,让它真正活起来。毕竟,一个只会自己默默计算的程序,就像一个只会自言自语的人——虽然厉害,但有点孤独。
让代码开口说话吧,从print("Hello, World!")开始,到写出能和你聊天的程序结束。 🎤👂
更多推荐



所有评论(0)