python练习第二组

豆包出了第二组关于"变量和基础数据类型"练习题目,如下:

一、变量与赋值(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 = 8n = 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 = 3a *= 2a += 5 后,a 的最终值是多少?(写出推导过程)

我的答案(正确):

python 复制代码
a = 3 
a *= 2 #3*2=6 
a += 5 #6+5=11 
a = 11

4.判断以下变量名是否合法,若不合法说明原因:_user123abcpython!class

我的答案(错误): _user合法 其他都不合法 `123abc`不能用数字开头 `python!`特殊词 `class`。特殊词

正确答案:

  1. python!:不合法(变量名只能包含字母、数字、下划线,不能包含 ! 等特殊字符);
  2. class:不合法(class 是 Python 关键字,专门用于定义类,不能作为变量名)。

错误分析:核心误区:"特殊词" 需区分 "特殊字符" 和 "关键字"------python! 是含特殊字符,class 是关键字,两者原因不同,需明确区分。

二、基础数据类型(int/float/bool)(4 题)

5.判断以下表达式的结果类型和具体值:

  1. 15 % 6
  2. 7.0 // 2
  3. not (3 > 5)
  4. 10 + 2.5 * 4

我的答案(错误):

  1. 15 % 6 =3
  2. 7.0 // 2 =3.0
  3. not (3 > 5) =True
  4. 10 + 2.5 * 4 =20

正确答案:

错误分析:缺少结果类型,没有认真读题。

  1. 15 % 6 → 类型:整数(int),值:3;
  2. 7.0 // 2 → 类型:浮点数(float),值:3.0;
  3. not (3 > 5) → 类型:布尔值(bool),值:True;
  4. 10 + 2.5 * 4 → 类型:浮点数(float),值:20.0(注意:2.5×4=10.0,10+10.0=20.0,浮点数运算结果为浮点数)。

6.定义 is_rainy = Falseis_cold = True,计算 is_rainy or not is_cold 的结果。

我的答案(正确):False

python 复制代码
is_rainy or not is_cold d = False #False or False =False

正确答案:

  1. 已知 is_rainy = Falseis_cold = True
  2. 先计算 not is_coldnot TrueFalse
  3. 再计算 is_rainy or FalseFalse or FalseFalse(你的推导中 "not is_cold = False" 是对的,但表述可更清晰)。

错误分析:布尔运算遵循 "先非后与或" 的优先级,先处理 not,再处理 or,逻辑顺序不能乱。

7.写出表达式,判断整数 x 是否为奇数(结果为布尔值)。

我的答案(错误):

python 复制代码
x = int(input("请输入整数")) 
if x % 2 != 0: 
    print("输入的是奇数") 
else: 
    print("输入的是偶数")

正确答案:x % 2 != 0x % 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) 
相关推荐
熊猫_豆豆7 小时前
python 用手势控制程序窗口文字大小
python·手势识别
AI视觉网奇8 小时前
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr
开发语言·c++·算法
wjs20248 小时前
并查集快速合并
开发语言
free-elcmacom8 小时前
MATLAB与高等数学<1>一道曲面积分题的几何直观
开发语言·数学建模·matlab·高等数学
LaoZhangGong1238 小时前
深度学习uip中的“psock.c和psock.h”
c语言·开发语言
Tony Bai8 小时前
Go 安全新提案:runtime/secret 能否终结密钥残留的噩梦?
java·开发语言·jvm·安全·golang
pengzhuofan8 小时前
Java演进与与工程师成长
java·开发语言
比昨天多敲两行8 小时前
C++入门基础
开发语言·c++
测试秃头怪8 小时前
2026最新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展