4. 输入输出与类型转换:input、print与强制类型转换
好了,我们开始聊Python里最实在的部分——怎么跟程序对话。
说白了,编程就是“输入数据 → 处理 → 输出结果”。input() 和 print() 就是这扇门。
刚开始时,我个人习惯先记住这两招,再慢慢琢磨类型转换。因为不搞清楚类型,程序会给你各种莫名其妙的错误。
4.1 print():把结果亮出来
print() 是Python里最常用的输出函数。我个人习惯说它是“调试神器”,你打印出变量值,就能快速定位问题。
基本用法很简单:
print("Hello, Python!")
print(42)
print(3.14)
输出是这样的:
Hello, Python!
42
3.14
你可以传多个参数,用逗号分隔。它们会按顺序打印,中间自动加空格:
name = "小明"
age = 25
print("姓名:", name, "年龄:", age)
输出:
姓名: 小明 年龄: 25
小提示: print() 默认在末尾加换行符。你可以通过 end 参数改掉这个行为。比如 print("加载中", end="") 就不会换行。
格式化输出呢?我推荐 f-string,在Python 3.6引入,可读性极强:
score = 95.5
print(f"你的成绩是:{score} 分")
输出:
你的成绩是:95.5 分
我在项目中遇到过一个坑——f-string 里的大括号必须成对出现。如果你要输出 { 和 },得写双大括号:
value = 42
print(f"{{value}} 的真实值是 {value}")
输出:
{value} 的真实值是 42
4.2 input():从用户那里拿数据
input() 会暂停程序,等用户输入一行内容。按下回车,函数返回你输入的那串文字。
基本用法:
name = input("请输入你的名字:")
print(f"你好,{name}!")
运行效果:
请输入你的名字:小明
你好,小明!
注意: input() 永远返回字符串(str 类型)。哪怕你输入的是数字 123,它也是字符串 "123"。
为什么会这样?因为Python不知道你想拿这个输入干什么。它保持原始状态,等你来处理。
我曾经见过一个新手程序员,写了这样的代码:
age = input("请输入年龄:")
print("明年你" + age + 1 + "岁")
这行代码会报错。因为字符串和数字不能直接相加。这就是类型的问题。
4.3 类型转换:让数据“改头换面”
Python是一种强类型语言,但变量可以引用不同类型的值。这听起来矛盾,其实很简单:
强类型:1 + "2" 会报错,不会像 JavaScript 那样自动给你拼成 "12"。
动态类型:你可以先让变量等于整数 123,再让它等于字符串 "abc"。
显式类型转换函数就是解决“强类型”带来的麻烦。
| 函数 | 目标类型 | 示例 | 结果 |
|---|---|---|---|
int(x) |
整数 | int("123") |
123 |
float(x) |
浮点数 | float("3.14") |
3.14 |
str(x) |
字符串 | str(42) |
"42" |
bool(x) |
布尔值 | bool(1) |
True |
看看实际的用法:
user_input = input("请输入你的年龄:") # 字符串 "25"
age = int(user_input) # 转换为整数 25
print(f"明年你 {age + 1} 岁")
输出:
请输入你的年龄:25
明年你 26 岁
4.4 隐式类型转换:Python自动帮你做
有时候Python会偷偷做类型转换。比如你写 1 + 2.0,Python自动把 1 转成 1.0,结果得到 3.0。
我叫它“隐式转换”,发生在一些运算场景里:
- 数值运算:整数 + 浮点数 → 浮点数
- 布尔运算:True → 1,False → 0
- 比较运算:1 == True 返回 True(因为 1 等于 1)
- 字符串乘整数:"Hi" * 3 → "HiHiHi"
但注意,字符串与数字相加,Python不会帮你转。你得用显式转换:
# 隐式转换:数值类型
result = 10 + 2.5 # 结果是 12.5(浮点数)
# 隐式转换:布尔参与数学运算
total = True + 2 # 结果是 3(True 当成 1)
print(total) # 输出 3
# 字符串加法需要显式转换
name = "张三"
age = 30
# print(name + age) # 这行会报错
print(name + str(age)) # 正确:输出 "张三30"
4.5 常见陷阱与避坑指南
我这里列几个我踩过的坑:
陷阱1:input返回的东西永远是字符串
你输入 123,得到的是 "123"。想做数学运算?先转类型。
陷阱2:int()转换时遇到非数字字符会炸
int("12abc") 或者 int("12.5") 都会报 ValueError。安全的做法是先用 str.isdigit() 判断,或者用 try-except 捕获异常。
小技巧: 用 float() 转小数更宽容。它可以处理 "3.14" 和 "3"(变成 3.0)。
错误的示例:
# 用户输入:
# 12.5
value = int(input("请输入整数:")) # 报错!12.5 不是合法整数
正确的做法:
user_input = input("请输入一个数:")
try:
number = float(user_input)
print(f"转换成功:{number}")
except ValueError:
print("你输入的不是一个有效数字。")
4.6 一个完整的输入输出示例
我把刚才的知识拼起来,写一个计算BMI(身体质量指数)的小程序:
# 获取用户输入
height_str = input("请输入身高(米):")
weight_str = input("请输入体重(公斤):")
# 类型转换
height = float(height_str)
weight = float(weight_str)
# 计算
bmi = weight / (height ** 2)
# 输出结果
print(f"你的BMI指数是:{bmi:.1f}")
# 简单的健康判断
if bmi < 18.5:
print("体重偏轻")
elif bmi < 24.0:
print("体重正常")
else:
print("体重偏重")
说明: {bmi:.1f} 表示保留一位小数。这是f-string的格式控制。
4.7 本章核心逻辑:输入 → 转换 → 处理 → 输出
你看,整个流程非常清晰:
- 输入:
input()拿到原始字符串 - 转换:
int()、float()、str()把数据转成你需要的样子 - 处理:计算、判断、拼装
- 输出:
print()把结果给用户看
下面这张图就是我对这个流程的理解。你可以把它当作大纲:
4.8 总结
嗯,这一章的核心就这几件事:
- print():把数据展示出来。记住f-string格式化,省事又清晰。
- input():拿用户输入。永远返回字符串,别指望它自动给你数字。
- 类型转换:用
int()、float()、str()等函数做显式转换。注意int()只能处理纯数字字符串。 - 隐式转换:Python帮你做的小聪明,但别依赖它跨类型运算。
理解了这个流程,你就能写一个简单的交互式程序了。