第 2 章 变量与数据类型
学习目标
- 理解变量与赋值的含义
- 掌握四种基本数据类型:int、float、str、bool
- 掌握变量命名规则
- 会用
int()、float()、str()做类型转换 - 会用
input()接收输入、用 f-string 输出
2.1 变量与赋值
变量是给数据起的名字。赋值用等号 = 完成:把右边的值绑定到左边的名字上。
python
message = "Hello"
print(message)输出:
Hello三点规则,先记牢:
- 先赋值,后使用。使用未赋值的变量会报
NameError。 - 可以反复赋值,新值覆盖旧值。
python
x = 10
x = 20
print(x)输出:
20- Python 是动态类型语言:变量的类型由它当前绑定的值决定,可以随时改变。
python
x = 10 # 此刻 x 是整数
x = "ten" # 此刻 x 变成了字符串2.2 四种基本类型
用内置函数 type() 可以查看一个值的类型:
python
print(type(42))
print(type(3.14))
print(type("hi"))
print(type(True))输出:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>四种基本类型:
- int:整数,如
42、-3、0。 - float:浮点数,即带小数部分的数,如
3.14、-0.5。 - str:字符串,一串文本,必须用引号包裹。
- bool:布尔值,只有两个取值
True和False,表示真与假。
关于 bool 的两个常识:bool(0) 为 False,bool(1) 为 True;空字符串 "" 为 False,非空字符串为 True。
2.3 命名规则
变量名必须遵守以下规则:
- 只能包含字母、数字、下划线,且不能以数字开头。
- 大小写敏感:
score与Score是两个不同的名字。 - 不能使用 Python 关键字。关键字是语言保留给语法用的词,如
for、if、while、def、class、import。注意print、input、type不是关键字,它们是内置函数。 - 惯例:变量名使用蛇形命名法(snake_case),即小写字母加下划线,如
user_age。
python
user_age = 18 # 合法
user_age_2 = 18 # 合法python
2_user = 18 # SyntaxError: 不能以数字开头
for = 18 # SyntaxError: 使用了关键字2.4 类型转换
三个内置函数用于在类型之间转换:
int(x):转为整数float(x):转为浮点数str(x):转为字符串
python
print(int("123")) # 字符串 → 整数:123
print(float("3.14")) # 字符串 → 浮点数:3.14
print(str(123)) # 整数 → 字符串:'123'
print(int(3.99)) # 浮点数 → 整数:3,小数部分直接截断
print(float(7)) # 整数 → 浮点数:7.0输出:
123
3.14
123
3
7.0转换不是万能的。把不合法的内容转成整数会报 ValueError:
>>> int("3.14")
ValueError: invalid literal for int() with base 10: '3.14'int("3.14") 会报错,因为 "3.14" 不是合法的整数写法;想转小数请用 float("3.14")。
2.5 输入与输出
内置函数 input() 从键盘读取一行输入,返回值永远是字符串,即使你输入的是数字:
python
name = input("请输入你的名字: ")
age = input("请输入你的年龄: ")
print(type(name), type(age))运行示例(输入 小明 和 18):
请输入你的名字: 小明
请输入你的年龄: 18
<class 'str'> <class 'str'>f-string(格式化字符串)是本书推荐的输出方式:在字符串前加字母 f,用花括号 {} 嵌入变量或表达式:
python
print(f"你好,{name}!你今年 {age} 岁")输出:
你好,小明!你今年 18 岁如果拿 input() 的结果直接参与算术,会出错——因为它是字符串。需要先转换:
python
age = int(input("请输入你的年龄: "))
next_year = age + 1
print(f"明年你 {next_year} 岁")动手实践
任务:温度换算。 读入一个摄氏温度,输出对应的华氏温度。换算公式:F = C × 9 ÷ 5 + 32。
python
c = float(input("请输入摄氏温度: "))
f = c * 9 / 5 + 32
print(f"{c} 摄氏度等于 {f} 华氏度")运行示例(输入 25):
请输入摄氏温度: 25
25.0 摄氏度等于 77.0 华氏度常见错误
| 错误写法 | 报错信息 | 原因 |
|---|---|---|
print(age)(未赋值) | NameError: name 'age' is not defined | 变量必须先赋值后使用 |
2_user = 18 | SyntaxError: invalid syntax | 变量名不能以数字开头 |
for = 18 | SyntaxError: invalid syntax | 不能使用关键字作变量名 |
int("3.14") | ValueError: invalid literal for int() with base 10: '3.14' | 字符串内容不是合法的整数 |
age = input(...) 后直接 age + 1 | TypeError: can only concatenate str (not "int") to str | input() 返回字符串,需先 int() 转换 |
章末练习
基础
- 定义三个变量,分别保存一个整数、一个浮点数、一个字符串,用
type()打印它们的类型。 - 读入两个整数,输出它们的和与积。
- 把字符串
"2026"转换为整数并加 1,输出结果。
提高
- 读入姓名和出生年份,计算并输出年龄(今年是 2026 年)。提示:先把出生年份用
int()转换。 - 不运行代码,写出下面程序的结果,并说明理由:python
a = "10" b = 10 print(a + b)
挑战
- 读入一个小数字符串(如
"3.14"),用float()转换后,分别输出它的整数部分和round()后的结果。注意:round()采用「银行家舍入」——恰好落在两个整数中间时取最近的偶数,例如round(2.5)是 2,round(3.5)是 4。
章末自测
每题选择一个最佳答案。本书不附答案:完成后交由老师或 AI 老师批改讲解。
- 下列哪个是合法变量名?
- A.
2name - B.
user_name - C.
user-name - D.
user name
- A.
type("123")的结果是?- A.
<class 'int'> - B.
<class 'str'> - C.
<class 'float'> - D.
<class 'bool'>
- A.
int("3.14")会?- A. 返回
3.14 - B. 返回
3 - C. 报
ValueError - D. 报
TypeError
- A. 返回
int(3.99)的结果是?- A.
3 - B.
4 - C.
3.99 - D. 报错
- A.
- 变量名不能以什么开头?
- A. 字母
- B. 下划线
- C. 数字
- D. 中文
input()的返回值类型总是?- A. int
- B. float
- C. str
- D. bool
bool("")的结果是?- A.
True - B.
False - C. 报错
- D. 空值
- A.
- 下列哪个是 Python 关键字?
- A.
print - B.
for - C.
input - D.
type
- A.
- 输出变量
name的正确 f-string 写法是?- A.
print("hello {name}") - B.
print(f"hello {name}") - C.
print("hello" + name) - D.
print(f"hello name")
- A.
- 变量
x先赋值10,再赋值"ten",此刻x的类型是? A. int B. str C. 保持 int D. 报错
