Administrator
Administrator
发布于 2026-10-31 / 0 阅读
0
0

Python 从入门到初级(02):变量、类型与输入输出:做一个温度换算器

本篇是《Python 从入门到初级》第 2 / 20 篇。示例使用 Python 3.12 兼容语法,完整目录结构与数据见配套源码包。

程序处理信息之前,需要先把信息保存下来。姓名是文字,温度是数字,是否完成是一个真假值。本篇用温度换算器认识变量、常见类型和输入输出。

温度文本经过类型转换和计算,得到格式化结果

1. 变量是给数据起一个名字

name = "小林"
age = 22
temperature = 25.5
finished = False

= 在这里表示赋值,把右边的对象交给左边的名字引用。不要把它读成数学里的恒等式。变量名可以重新绑定:age = age + 1 表示根据旧值计算新值,再保存。

先记住四种常见类型:str 保存文字,int 保存整数,float 保存常见的小数近似值,bool 保存 True 或 False。类型决定能做什么操作,而不只是显示样式。

例如 "12" + "3" 得到 "123",12 + 3 得到 15。前者拼接字符串,后者做加法。基本操作见 官方入门说明。

2. input 得到的是文字

即使用户输入 25,input() 返回的也仍然是字符串。想参与计算,需要明确转换,例如 int("25") 或 float("25.5")。

保存为 lesson02.py:

name = input("你的名字:").strip()
celsius_text = input("摄氏温度:")
celsius = float(celsius_text)
fahrenheit = celsius * 9 / 5 + 32

print(f"你好,{name}!")
print(f"{celsius:.1f} 摄氏度 = {fahrenheit:.1f} 华氏度")
print("输入转换前的类型:", type(celsius_text).__name__)
print("转换后的类型:", type(celsius).__name__)

运行 python lesson02.py。第一次输入 小林,第二次输入 25。摄氏转华氏公式为 摄氏 × 9 ÷ 5 + 32,预期看到 25.0 摄氏度 = 77.0 华氏度,转换前是 str,转换后是 float。

这个程序不是在浏览器里画输入框;input() 会在终端等待你输入并回车。程序没有结束而是在等输入时,不必反复启动它。

3. 读懂计算与输出格式

* 是乘法,/ 是除法,括号可以明确先后顺序。Python 按运算符规则计算,不会按照中文描述猜意图。

f"你好,{name}" 是 f-string,会把变量放进文字中。{celsius:.1f} 指定按一位小数展示。它改变的是展示格式,不是把变量从 float 变成某种“只有一位的小数类型”。

type(value).__name__ 用来观察类型。在排查“看起来都是 25,为什么不能加”时,查看类型往往很直接。

4. 小数和金额为什么要特别留心

常见二进制浮点数不能精确表示所有十进制小数。例如 0.1 + 0.2 的显示可能不是直接写下的 0.3。格式化输出成两位小数,并不等于所有计算都获得了十进制精确性。

本系列订单金额统一用整数分,例如 5900 表示 59.00 元;这也让后续 CSV、JSON 和数据库示例保持一致。需要按十进制规则计算时,可以学习 decimal 模块,并明确舍入、币种和业务规则。

5. 三个常见错误

float("温度25") 不能直接转换,会得到 ValueError。转换函数不会自动提取字符串里的数字。

把 name 写成 Name 会引用不同的名字。Python 区分大小写。

变量名覆盖 str、int 或 input,可能让后续调用变得异常。优先使用 user_name、total_count 这样能表达含义的名字。

目前示例遇到非法输入会显示报错,这是一个明确的边界;第 9 篇会学习如何捕获并给出更友好的提示,不要在这里临时用 eval() 处理用户输入。

6. 练习:单位换算

把程序改成“分钟换算秒”:输入 2.5 分钟,输出 150.0 秒。关键仍是先把 input 的字符串转换成数字,再乘以 60。

再输入 abc,观察报错类型和对应行号。能解释为什么成功和为什么失败,才算掌握输入与类型转换,而不是只复制了一个正常例子。


上一篇:Python 能做什么:安装环境并运行第一个程序 · 系列目录 · 下一篇:字符串处理:清洗名称、拆分标签与展示邮箱


评论