豆包出了第二组关于"变量和基础数据类型"练习题目,如下:
一、变量与赋值(4 题)
1.声明变量 height = 1.75(身高,单位米)、weight = 65(体重,单位千克),计算 BMI 指数(BMI = 体重 ÷ 身高 ²)并赋值给 bmi,最后打印 bmi。
我的答案(正确):
python
height = 1.75
weight = 65
MBI = 65 / (1.75 ** 2)
print(MBI)
2.已知 m = 8、n = 4,用两种方式实现变量交换(一种用临时变量,一种用 Python 特有解包)。
我的答案(正确):
python
#方法1
m = 8
n = 4
a = m
b = n
m = b
n = a
#方法2
m = 8
n = 4
m , n = n , m
3.执行 a = 3、a *= 2、a += 5 后,a 的最终值是多少?(写出推导过程)
我的答案(正确):
python
a = 3
a *= 2 #3*2=6
a += 5 #6+5=11
a = 11
4.判断以下变量名是否合法,若不合法说明原因:_user、123abc、python!、class。
我的答案(错误): _user合法 其他都不合法 `123abc`不能用数字开头 `python!`特殊词 `class`。特殊词
正确答案:
python!:不合法(变量名只能包含字母、数字、下划线,不能包含!等特殊字符);class:不合法(class是 Python 关键字,专门用于定义类,不能作为变量名)。
错误分析:核心误区:"特殊词" 需区分 "特殊字符" 和 "关键字"------python! 是含特殊字符,class 是关键字,两者原因不同,需明确区分。
二、基础数据类型(int/float/bool)(4 题)
5.判断以下表达式的结果类型和具体值:
15 % 67.0 // 2not (3 > 5)10 + 2.5 * 4
我的答案(错误):
- 15 % 6 =3
- 7.0 // 2 =3.0
- not (3 > 5) =True
- 10 + 2.5 * 4 =20
正确答案:
错误分析:缺少结果类型,没有认真读题。
15 % 6→ 类型:整数(int),值:3;7.0 // 2→ 类型:浮点数(float),值:3.0;not (3 > 5)→ 类型:布尔值(bool),值:True;10 + 2.5 * 4→ 类型:浮点数(float),值:20.0(注意:2.5×4=10.0,10+10.0=20.0,浮点数运算结果为浮点数)。
6.定义 is_rainy = False、is_cold = True,计算 is_rainy or not is_cold 的结果。
我的答案(正确):False
python
is_rainy or not is_cold d = False #False or False =False
正确答案:
- 已知
is_rainy = False、is_cold = True; - 先计算
not is_cold→not True→False; - 再计算
is_rainy or False→False or False→False(你的推导中 "not is_cold = False" 是对的,但表述可更清晰)。
错误分析:布尔运算遵循 "先非后与或" 的优先级,先处理 not,再处理 or,逻辑顺序不能乱。
7.写出表达式,判断整数 x 是否为奇数(结果为布尔值)。
我的答案(错误):
python
x = int(input("请输入整数"))
if x % 2 != 0:
print("输入的是奇数")
else:
print("输入的是偶数")
正确答案:x % 2 != 0 或 x % 2 == 1(直接返回布尔值)。
错误分析:题目要求 "写出一个表达式(结果为布尔值)",而非完整的输入输出代码 ------ 你的代码是完整的判断逻辑,虽能实现功能,但未贴合考点。
8.已知 num = 10,执行 num = num / 2 后,num 的数据类型是什么?执行 num = num // 2 后呢?
我的答案(错误):浮点数 整数
正确答案:第一问正确,第二问错误,执行 num = num // 2 时,需看当前 num 的类型(此时 num 已为 5.0,浮点数),5.0 // 2 → 结果为 2.0,类型仍为浮点数(float),而非整数。
错误分析:// 整除的结果类型由操作数决定 ------ 若操作数全为整数,结果为整数;若有浮点数,结果为浮点数。
三、字符串(4 题)
9.定义字符串 msg = "Python 编程很有趣",用索引获取倒数第 3 个字符。
我的答案(正确):
python
msg = "Python 编程很有趣"
print(msg[-3])
10.用字符串拼接、f-string、% 格式化三种方式,将 product = "手机"、price = 2999 组合成字符串 "手机的售价是 2999 元"。
我的答案(正确):
python
s1 = "手机"
price = 2999
print(s1+"的售价是 "+str(price)+" 元")
print("%s的售价是 %d 元"%(s1,price))
print(f"{s1}的售价是 {price} 元")
11.定义 s = " Python 基础 2024 ",如何只去除字符串左侧的空格?如何只去除右侧的空格?
我的答案(正确):
python
s = s.lstrip()#只去掉左侧
s = s.rstrip()#只去掉右侧
12.字符串 s1 = "hello"、s2 = "HELLO",如何修改其中一个字符串,让 s1 == s2 结果为 True?(写出代码)
我的答案(正确):
python
s1 = s1.upper() #改为大写
s2 = s2.lower() #改为小写
四、复合数据类型(列表 / 元组 / 字典 / 集合)(8 题)
13.定义列表 nums = [2, 4, 6, 8],完成以下操作:
在列表开头添加元素 0;
删除列表中索引为 2 的元素;
将列表中最后一个元素改为 10。
我的答案(正确):
python
nums = [2, 4, 6, 8]
nums.insert(0, 0)#指定位置添加用insert
nums.pop(2)#移除指定位置的元素
nums[-1] = 10
14.定义元组 info = ("张三", 20, "大学生"),如何获取 "20" 这个元素?能否直接修改元组中 "大学生" 为 "研究生"?
我的答案(错误):
python
info = ("张三", 20, "大学生")
print(type(info))
print(info[1]) #获取20
info = list(info) #不能直接修改,元组不支持编辑,可以转为列表修改后再转回元组
n = info.index("大学生")
info[n] = "研究生"
info = tuple(info)
正确答案:元组本身不可变,无法直接修改元素;
错误分析:题目仅问 "能否直接修改'大学生'为'研究生'",只需回答 "不能(元组不可变)",无需写 "转列表修改再转回元组" 的代码(虽代码语法正确,但偏离 "直接修改" 的考点);
15.定义字典 book = {"title": "Python 入门", "author": "李四", "price": 59},完成以下操作:
获取 author 对应的 value;
向字典添加键值对 ("publish", "编程出版社");
修改 price 的值为 49。
我的答案(正确):
python
book = {"title": "Python 入门", "author": "李四", "price": 59}
print(book["author"])#获取`author` 对应的 value
book["publish"]= "编程出版社"#添加新的键值对
book["price"] = 49#修改值为49
16.定义集合 A = {1, 3, 5, 7}、B = {2, 3, 6, 7},计算两个集合的差集(A 中有但 B 中没有的元素)和对称差集(仅一方有的元素),分别写出代码。
我的答案(正确):差集{1,5}、对称差集{1,2,5,6}
python
A = {1, 3, 5, 7}
B = {2, 3, 6, 7}
print(A-B)#差集,(A 有 B 无)
print(A^B)#对称差集 (仅一方有)
补充:也可写 A.difference(B)(差集)、A.symmetric_difference(B)(对称差集),运算符写法更简洁。
17.列表 words = ["apple", "banana", "apple", "orange", "banana"],如何快速去除重复元素并保留原列表顺序?(写出核心代码)
我的答案(错误):
python
#列表转集合去重
words = ["apple", "banana", "apple", "orange", "banana"]
words = set(words)
words = list(words)
正确答案:
python
#列表转字典去重
words = ["apple", "banana", "apple", "orange", "banana"]
words = list(dict.fromkeys(words))
错误分析:你的 "列表转集合去重" 是基础方法,但题目明确要求 "去除重复元素并保留原列表顺序"------ 集合无序,转集合后顺序会打乱(如原列表顺序 ["apple","banana","apple","orange","banana"],转集合后可能变成 ["apple","banana","orange"] 或其他顺序);Python3.7+ 字典有序,dict.fromkeys(列表) 会按原顺序保留唯一键。
18.字典 student = {"name": "王五", "age": 17, "score": {"math": 90, "english": 85}},如何获取英语成绩(85)?
我的答案(正确):
python
student = {"name": "王五", "age": 17, "score": {"math": 90, "english": 85}}
score = student.get("score")
print(score.get("english"))
19.判断以下代码执行后,my_list 的结果是什么:
my_list = [1, 2, 3]
my_list.append([4, 5])
my_list.extend([6, 7])
我的答案(正确):[1, 2, 3, [4, 5], 6, 7] ,append整体插入元素或列表,extend逐个插入元素
20.定义 data = (1, 2, [3, 4]),能否修改列表 [3,4] 中的元素为 [3, 4, 5]?如果可以,写出代码;如果不可以,说明原因。
我的答案(正确):可以修改,元组中的列表可以修改
python
data = (1, 2, [3, 4])
data[2].append(5)