最近又在学习python,刚刚学完,或者说复习完,变量和基础数据类型,所以让豆包出了一些练习题目,如下:
一、变量与赋值(5 题)
1.声明一个变量 age 并赋值为 25,再声明变量 name 赋值为自己的姓名(字符串类型),最后用 print() 同时输出这两个变量的值。
我的答案(正确):
python
age =5
name = "abb"
print(name,age)
2.定义变量 a = 10、b = 3,通过一次赋值操作交换 a 和 b 的值(不使用临时变量)。
我的答案(错误):
python
a = 10
b = 3
a , b = 3, 10
正确答案:
python
a = 10
b = 3
a , b = b , a
错误分析:你的写法是直接重新赋值 a, b = 3, 10,本质是手动输入目标值,而非利用 Python 特有的 "变量解包" 实现交换。
3.已知 x = 5,执行 x += 3、x *= 2 后,x 的值是多少?(仅需写出最终结果的推导逻辑,无需代码)
我的答案(正确):
python
x = 5
x += 3 #等价于x = x + 3 x = 5 +3 = 8
x *= 2 #等价于x = x *2 x = 8 * 2 = 16
4.声明变量 price = 99.9(商品价格),discount = 0.8(折扣),计算折后价格并赋值给 final_price,最后打印 final_price。
我的答案(正确):
python
price = 99.9
discount = 0.8
final_price = price * discount
print(final_price)
5.能否直接给变量 123num 赋值为 45?如果不能,说明原因(从变量命名规则角度)。
我的答案(错误):不能,数字不能做变量名
正确答案:Python 变量命名规则要求 "变量名必须以字母(a-z/A-Z)或下划线(_)开头,不能以数字开头"。
错误分析:23num 以数字 1 开头,违反命名规则,因此不能作为变量名(而非单纯 "数字不能做变量名"------ 数字可以出现在变量名中间或末尾,如 num123 是合法的)。
二、基础数据类型(整数、浮点数、布尔值)(5 题)
6.判断以下表达式的结果类型(填 "整数""浮点数" 或 "布尔值"):
a)10 + 3.5
b)20 // 4
c)15 % 4 == 3
d)3.0 * 5
我的答案(错误):a)浮点数、b)整数、整数、d)浮点数
正确答案:c)是布尔值。
错误分析:% 是取余运算,15%4=3,所以表达式是 3==3,结果是 True,属于布尔值。
7.定义布尔变量 is_student = True、has_id = False,计算 is_student and has_id、is_student or has_id 的结果。
我的答案(正确):
python
is_student and has_id = False
is_student or has_id = True
8.计算 8 / 2 和 8 // 2 的结果,说明两者的区别(从结果类型和运算逻辑角度)。
python
8 / 2 = 4
8 // 2 =4
我的答案(错误):两者结果是一样的,//表示整除,不要余数
正确答案:结果部分:8/2=4.0(浮点数),8//2=4(整数)
错误分析:你写的 4 是数值相等,但数据类型不同(这是关键区别)。
9.已知 num = 7,执行 num = num + 2.3 后,num 的数据类型发生了什么变化?
我的答案(正确):从整数变为浮点数
10.写出一个表达式,判断整数 n(假设已定义)是否能同时被 2 和 3 整除(结果为布尔值)。
我的答案(错误):如果n/2和n/3的余数为0,n可以被2,3整除 代码不会写
正确答案:n % 2 == 0 and n % 3 == 0。
错误分析:用取余运算符 % 判断余数是否为 0,而非 /;``/ 是除法,会得到商,无法直接判断余数。
三、字符串(4 题)
11.定义字符串 s = "Python 基础学习",使用字符串索引获取第 3 个字符(注意:索引从 0 开始)。
我的答案(正确):
12.用字符串拼接和字符串格式化(任意一种格式化方式)两种方法,将变量 name = "小明"、score = 95 组合成字符串 "小明的数学成绩是 95 分"。
我的答案(错误):
python
name = "小明"
point = 95
print(f"{name}的数学成绩是{point}分")
正确答案:"拼接" 方式
python
print(name + "的数学成绩是" + str(point) + "分")#字符串拼接
错误分析:需完成 "字符串拼接" 和 "字符串格式化" 两种方法,缺少 "拼接" 方式的实现。
13.定义字符串 text = " Hello World! ",如何去除字符串前后的空格?写出对应的代码。
我的答案(正确):
python
text = " Hello World! "
print(text.strip())#去除字符串前后的空格
14.判断字符串 s1 = "apple" 和 s2 = "Apple" 是否相等(用 == 运算),并说明原因。
我的答案(正确):不相等,因为区分大小写
python
s1 = "apple"
s2 = "Apple"
print(s1==s2) #结果返回了False
四、复合数据类型(列表、元组、字典、集合)(6 题)
15.定义一个列表 fruits = ["苹果", "香蕉", "橙子"],完成以下操作:
a)向列表末尾添加元素 "葡萄";
b)替换列表中第 2 个元素(索引为 1)为 "芒果";
c)删除列表中的 "橙子" 元素。
我的答案(正确):
python
fruits = ["苹果", "香蕉", "橙子"]
fruits.append("葡萄") #添加"葡萄"
fruits[1]="芒果" #显示索引1的内容
fruits.remove("橙子") #将"橙子"从列表中删除
16.定义元组 colors = ("红", "绿", "蓝"),尝试修改元组中第 1 个元素为 "黄",会出现什么结果?为什么?
我的答案(正确):修改会报错, 元组不支持修改
17.定义字典 student = {"name": "小红", "age": 16, "grade": "高一"},如何获取 "grade" 对应的 value?如何向字典中添加键值对 ("score", 88)?
我的答案(错误):前两问回答正确,第三问回答有误。
python
student = {"name": "小红", "age": 16, "grade": "高一"}
print(student['grade'])#访问字典
print(student.get("grade"))#获取 "grade" 对应的 value
student = {"name": "小红", "age": 16, "grade": "高一","score":88} #添加键值对 ("score", 88)
正确答案:
python
student = {"name": "小红", "age": 16, "grade": "高一"}
student["score"] = 88#添加键值对 ("score", 88)
错误解析:你重新定义了一个新字典 student = {"name": "小红", ..., "score":88},本质是 "覆盖原字典",而非 "向原字典添加键值对"(若原字典有更多复杂数据,会丢失原有内容)。
18.定义两个集合 set1 = {1, 2, 3, 4}、set2 = {3, 4, 5, 6},计算两个集合的交集和并集(分别写出代码)。
我的答案(正确):交集{3,4},并集{1,2,3,4,5,6}
python
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 & set2) #交集,两个集合共有的元素
print(set1 | set2) #并集,两个集合所有元素,自动去重
15、 16、 17、18、 set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} print(set1 & set2) print(set1 | set2) 19、 不会 20、 列表 元组 字典 集合
19.列表 nums = [1, 2, 2, 3, 3, 3],如何快速去除列表中的重复元素?(写出核心代码)
我的答案(错误):这题不会,没学到这个知识。
正确答案:利用集合不可重复的特性。
python
nums = [1,2,2,3,3,3]
nums = list(set(nums))#将列表转为集合再转回列表,通过集合去重
20.判断以下数据类型分别是什么:
a)[1, "a", True]
b)("Python", 3.9, 2024)
c){"city": "北京", "area": 16410}
d){5, 6, 7, 5}
我的答案(正确):a)列表、b)元祖、c)字典、d)集合