# 问答库

# 2.1.6 运算符与表达式（问答库）

1. 【单选题·易】Python 提供了丰富的运算符类型。下列哪一项属于课程所列的五类运算符之一？
   A. 循环运算符
   B. 成员运算符
   C. 缩进运算符
   D. 注释运算符
   **答案：B**
   **解析：** 课程明确列出五类：算术运算符、关系运算符、逻辑运算符、赋值运算符和成员运算符。循环、缩进、注释都不是运算符类型。

2. 【单选题·易】使用关系运算符（也称比较运算符）比较两个值时，运算结果的类型是什么？
   A. 整数
   B. 字符串
   C. 布尔值 True 或 False
   D. 列表
   **答案：C**
   **解析：** 关系运算符用于判断相等或大小关系，结果为布尔值 True 或 False。例如 `a = 87` 时，`a >= 60` 的结果是 True。

3. 【判断题·易】当只有一个运算对象时，`-` 是求该对象的相反数；当有两个运算对象时，`-` 是减法运算。
   **答案：√**
   **解析：** 这是课程对算术运算符中减号的说明：一元减号求相反数，二元减号做减法。

4. 【判断题·易】复合赋值运算符中，`a += b` 相当于 `a = a + b`。
   **答案：√**
   **解析：** 课程给出的运算规则就是：`a += b` 相当于 `a = a + b`，即先做加法再把结果写回 `a`。

5. 【单选题·中】`//` 和 `%` 常用于整数之间。运行下列程序，输出依次是什么？

```python
print(17 // 5)
print(17 % 5)
```

   A. `3.4` 和 `2`
   B. `3` 和 `2`
   C. `2` 和 `3`
   D. `3` 和 `3.4`
   **答案：B**
   **解析：** `//` 计算两整数相除的商，`%` 计算余数。17 = 5×3 + 2，故商为 3、余数为 2。A、D 把真除法的小数结果混进来了；C 把商和余数写反了。

6. 【多选题·中】算术运算符用于执行基本数学运算。下列属于算术运算的有：
   A. 加、减、乘、除
   B. 取整除法、求余、幂运算
   C. 判断某个值是否在列表中
   D. 把右侧表达式的结果赋给左侧变量
   **答案：AB**
   **解析：** 课程指出算术运算符包括加、减、乘、除、取整除法、求余、幂运算。C 是成员运算符 `in` 的作用，D 是赋值运算符 `=` 的作用。

7. 【多选题·中】运行下列程序后，哪些表达式的值为 True？

```python
font = {'字体': '宋', '字号': 14, '颜色': '黑色'}
print('abc' in 'abc def')
print(3 in [3, 6, 9])
print('字体' in font)
print('宋' in font)
```

   A. `'abc' in 'abc def'`
   B. `3 in [3, 6, 9]`
   C. `'字体' in font`
   D. `'宋' in font`
   **答案：ABC**
   **解析：** `'abc'` 是 `'abc def'` 的子串，`3` 在列表 `[3, 6, 9]` 中，故 A、B 为 True。对字典，`in` 只测键、不测值：`'字体'` 是键，为 True；`'宋'` 是值，为 False。

8. 【判断题·中】对字典使用成员运算符 `in` 时，既可以测试某个键是否在字典中，也可以测试某个值是否在字典中。
   **答案：×**
   **解析：** 课程强调：`in` 可以测试一个键是否在字典中，而不能测试一个值是否在字典中。例如 `'字体' in font` 为 True，`'宋' in font` 为 False。

9. 【单选题·中】设 `a = 87`。下列哪一种写法不能正确表达“变量 a 的值为 60～100”？
   A. `(a>=60) and (a<=100)`
   B. `60<=a<=100`
   C. `(a>=60) or (a<=100)`
   D. `(a >= 60) and (a <= 100)`
   **答案：C**
   **解析：** 课程用 `and` 连接两个关系运算，也可以写成链式比较 `60<=a<=100`。`or` 是“或”，`a>=60` 或 `a<=100` 对绝大多数实数都为真，并不能表示“同时落在 60～100”。A 与 D 只是空格不同，语义相同。

10. 【简答题·中】请写出 Python 的五类运算符，并各用一句话说明其作用。
    **答案：** ①算术运算符：对数值做加、减、乘、除、取整除法、求余、幂运算等。②关系（比较）运算符：比较大小或是否相等，结果为 True 或 False。③逻辑运算符：在布尔值 True、False 之间运算，如 `and`。④赋值运算符：基本赋值 `=` 把右侧结果赋给左侧变量；复合赋值如 `+=` 把运算与赋值合在一起。⑤成员运算符：测试某个值是否存在于字符串、列表、元组、集合或字典中（对字典只测键）。
    **解析：** 评分要点：五类名称齐全；作用与课程一致。漏写“对字典只测键”或把成员运算写成循环，酌情扣分。

11. 【简答题·难】什么是表达式？课程给出的运算符优先级从高到低大致是怎样的？为什么建议使用括号？请写出判断“a 在 100～200 且为偶数”的带括号表达式，并用一段可直接运行的程序验证 `a = 150` 时结果为 True。
    **答案：** 表达式是由操作数（变量、常量）和运算符连接起来、符合语法规则的式子。优先级从高到低大致为：算术运算符、关系运算符、逻辑运算符、赋值运算符、成员运算符。加括号可以明确计算顺序，并提高可读性。带括号的表达式为 `((a>=100) and (a<=200)) and (a%2==0)`。验证程序：

```python
a = 150
print(((a >= 100) and (a <= 200)) and (a % 2 == 0))
```

运行后输出 `True`（150 落在 100～200 且能被 2 整除）。
    **解析：** 评分要点：①给出表达式定义；②优先级顺序与课程一致；③说明括号用于明确顺序和提高可读性；④表达式与课程示例一致且代码可运行；⑤输出为 True。

12. 【单选题·难】运行下列程序，输出结果是什么？

```python
a = 5
b = a + 3
a += 3
font = {'字体': '宋', '字号': 14, '颜色': '黑色'}
print(a)
print(b)
print('字体' in font)
print('宋' in font)
```

   A. `5`、`8`、`True`、`True`
   B. `8`、`8`、`True`、`False`
   C. `8`、`8`、`False`、`True`
   D. `5`、`8`、`True`、`False`
   **答案：B**
   **解析：** `b = a + 3` 只把和 8 赋给 `b`，此时 `a` 仍为 5；随后 `a += 3` 把 `a` 改为 8。对字典 `in` 只测键：`'字体'` 是键，为 True；`'宋'` 是值，为 False。因此四行输出依次为 8、8、True、False。A 忽略了复合赋值会改写 `a`；C 把键和值测反了；D 漏掉了 `a += 3`。
