python赋值运算符选择题
时间: 2025-01-06 15:45:17 浏览: 47
### 关于Python赋值运算符的选择题
#### 题目一:理解简单赋值操作
下列哪项代码片段会使得变量`x`最终等于10?
- A. `y = 5; x += y`
- B. `x = 5; x *= 2`
- C. `z = 5; x -= z`
- D. `w = 5; x /= w`
正确选项是B,因为当执行`x = 5; x *= 2`时,这相当于先给`x`赋予了数值5,之后再乘以2得到的结果就是10[^1]。
```python
x = 5
x *= 2
print(x) # 输出: 10
```
#### 题目二:链式赋值的理解
下面哪一个表达式的运行结果不会使三个变量都具有相同的值?
- A. `a = b = c = 'hello'`
- B. `(d, e, f) = ('world',)*3`
- C. `g = h = i = []`
- D. `j = k = l = dict()`
正确答案为C。虽然看起来像是创建了三个独立列表对象并分别指向它们,但实际上这三个名称都将引用同一个空列表实例。因此修改其中一个会影响其他两个所指代的对象状态[^2]。
```python
g = h = i = []
h.append('item')
print(g is h) # 输出: True
print(i) # 输出: ['item']
```
#### 题目三:增强型赋值语句的应用场景
考虑如下代码段:
```python
m = 8
n = m **= 2
o = n //= 4
p = o %= 7
q = p <<= 1
r = q >>= 1
s = r &= 3
t = s |= 1
u = t ^= 1
v = u ~= ~(-1)
```
请问最后`v`的值是多少?此题考察对于复合赋值运算符以及位运算符掌握情况。
解析过程如下:
- 初始状态下,`m`=8;
- 执行`m **= 2`后变为64(`m=m**2`);
- 接着通过整除分配给`n`(即`n//=4`)获得16;
- 对`o%=7`取模处理得出余数2;
- 左移一位变成4(`<<=`),右移回退到2(`>>=`);
- 使用按位与(&)保持不变仍为2;
- 或者(|)加上最低有效位变作3;
- 异或(^)翻转最底端比特至2;
- 取反(~)加负号转换成正数形式最终还是2.
所以`v`的终值应为2[^3].
阅读全文
相关推荐


















