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 本章核心逻辑:输入 → 转换 → 处理 → 输出

你看,整个流程非常清晰:

  1. 输入:input() 拿到原始字符串
  2. 转换:int()、float()、str() 把数据转成你需要的样子
  3. 处理:计算、判断、拼装
  4. 输出:print() 把结果给用户看

下面这张图就是我对这个流程的理解。你可以把它当作大纲:

输入输出与类型转换流程 输入输出与类型转换:核心流程 用户输入 键盘输入文本 input() 返回字符串 强制类型转换 int() / float() / str() 处理数据 print() 输出 显示结果 隐式转换 Python自动处理 int → float 核心原则:input输出字符串 → 类型转换 → 处理 → print输出 强制转换是安全保底,隐式转换靠Python自动判断

4.8 总结

嗯,这一章的核心就这几件事:

  • print():把数据展示出来。记住f-string格式化,省事又清晰。
  • input():拿用户输入。永远返回字符串,别指望它自动给你数字。
  • 类型转换:用 int()、float()、str() 等函数做显式转换。注意 int() 只能处理纯数字字符串。
  • 隐式转换:Python帮你做的小聪明,但别依赖它跨类型运算。

理解了这个流程,你就能写一个简单的交互式程序了。