Python第二次作业

1.题目:已知列表x=list(range(9)),那么执行语句del x[:2]之后,x的值为( D)

A.[1,3,5,7,9] B.[1,3,5,7] C.[0,1,3,5,7] D.[2,3,4,5,6,7,8]

#解题思路:

1. list(range(9)) 生成 [0,1,2,3,4,5,6,7,8](左闭右开,不包含9)

2. del x[:2] 表示删除列表前2个元素(切片 [:2] 对应索引0和1)

3. 剩余元素从索引2开始,即 [2,3,4,5,6,7,8]

代码

python 复制代码
x = list(range(9))
del x[:2]
print(f"执行后x的值:{x}")
print(f"第1题答案:D")

2.题目:len(range(1,10))的值是( B)

A.8 B.9 C.10 D.11

# 解题思路:

1. range(1,10) 生成 1~9 的整数序列(左闭右开,包含1不包含10)

2. 序列元素:1,2,3,4,5,6,7,8,9 共9个元素

3. len() 函数返回序列长度

代码

python 复制代码
result = len(range(1, 10))
print(f"len(range(1,10)) 的结果:{result}")
print(f"第2题答案:B")

3.题目:表达式",".join(list)中list是列表类型,以下选项中对其功能的描述正确的是( D)

A.将逗号字符串增加到列表list中

B.在列表list每个元素后增加一个逗号

C.将列表所有元素连接成一个字符串,每个元素后增加一个逗号

D.将列表所有元素连接成一个字符串,元素之间增加一个逗号 "

# 解题思路:

1. join() 方法的作用:将可迭代对象(如列表)的元素连接成一个字符串

2. 连接符是调用 join() 的字符串(此处为 ",")

3. 示例:["a","b","c"] → "a,b,c"(元素之间加逗号,而非每个元素后加)

代码

python 复制代码
test_list = ["a", "b", "c"]
join_result = ",".join(test_list)
print(f'["a","b","c"] 执行 ",".join() 后:{join_result}')
print(f"第3题答案:D")

4.题目:表达式[1,2,3]*3的执行结果为( A)

A.[1,2,3,1,2,3,1,2,3] B.{[1,2,3],[1,2,3],[1,2,3]} C.[1,2,3],[1,2,3],[1,2,3] D.([1,1,1,2,2,2,3,3,3])

# 解题思路:

1. 列表 * 整数 n:表示将列表重复 n 次,生成新列表

2. [1,2,3]*3 → 重复3次,拼接为 [1,2,3,1,2,3,1,2,3]

3. 注意:不是元素重复(排除D),结果是列表(排除B、C)

代码

python 复制代码
list_multiply = [1,2,3] * 3
print(f"[1,2,3]*3 的结果:{list_multiply}")
print(f"第4题答案:A")

5.题目:假设列表对象aList的值为[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到的值是(B)

A.[5,6,7,9,11] B.[6,7,9,11] C.[5,6,7,9,] D.[7,9,11,13]

# 解题思路:

1. 列表切片规则:aList[start:end] → 从索引start开始,到索引end-1结束(左闭右开)

2. aList[3:7] → 索引3(6)、4(7)、5(9)、6(11)→ 结果 [6,7,9,11]

3. 注意:列表索引从0开始计数

代码

python 复制代码
aList = [3,4,5,6,7,9,11,13,15,17]
slice_result = aList[3:7]
print(f"aList[3:7] 的结果:{slice_result}")
print(f"第5题答案:B")

6.题目:已知x=list(range(20)),那么表达式x[-1]的值为( D)

A.0 B.1 C.20 D.19 "

# 解题思路:

1. list(range(20)) 生成 0~19 的整数列表(共20个元素)

2. Python 列表支持负索引:x[-1] 表示最后一个元素,x[-2] 表示倒数第二个

3. 最后一个元素是19

代码

python 复制代码
x = list(range(20))
last_element = x[-1]
print(f"list(range(20)) 的最后一个元素:{last_element}")
print(f"第6题答案:D")

7.题目:切片操作list(range(6))[::2]执行结果为(D)

A.[0,1] B.[0,2,4,6] C.[0,1,2] D.[0,2,4]

# 解题思路:

1. 完整切片语法:[start:end:step] → step为步长(默认1)

2. list(range(6)) → [0,1,2,3,4,5]

3. [::2] → start=0(默认)、end=最后(默认)、step=2 → 取索引0,2,4 → [0,2,4]

代码

python 复制代码
slice_step = list(range(6))[::2]
print(f"list(range(6))[::2] 的结果:{slice_step}")
print(f"第7题答案:D")

8.题目:已知x=[3,7,5],那么执行语句x=x.sort(reverse=True)之后,x的值为(C)

A.[3,5,7] B.[7,5,3] C.None D.[3,7,5]

# 解题思路:

1. sort() 是列表的原地排序方法(直接修改原列表,不返回新列表)

2. 原地方法的返回值为 None

3. x = x.sort(...) → 将 None 赋值给x,所以x最终为None

代码

python 复制代码
x = [3,7,5]
x = x.sort(reverse=True)  # sort()返回None,x被赋值为None
print(f"执行x=x.sort(reverse=True)后x的值:{x}")
print("补充说明:若要得到排序后的列表,应先排序再使用原列表:")
y = [3,7,5]
y.sort(reverse=True)
print(f"y.sort(reverse=True) 后y的值:{y}")
print(f"第8题答案:C")

9.题目:下面程序输出是什么? txt=["a","b","c","d","e"] stop_words=["d","i"] t=[x for x in txt if x not in stop_words] print(t) D

A.["a","b","c","d","e"] B.["a","b","c","d"] C.["a","b","c"] D.["a","b","c","e"]

# 解题思路:

1. 列表推导式:[x for x in 可迭代对象 if 条件] → 筛选满足条件的元素

2. 条件:x not in stop_words → 元素不在stop_words(["d","i"])中

3. txt中的元素:a(满足)、b(满足)、c(满足)、d(不满足)、e(满足)→ 结果 ["a","b","c","e"]

代码

python 复制代码
txt = ["a","b","c","d","e"]
stop_words = ["d","i"]
t = [x for x in txt if x not in stop_words]
print(f"程序运行结果:{t}")
print(f"第9题答案:D")

10.题目:下面程序的输出是: ls=["abcd","ab","cd","cdab"] n,m=0,0 for line in ls: if "ab" and "cd" in line: n+=1 m+=1 elif "ab" in line: n+=1 elif "cd" in line: m+=1 print (n,m) A

A:3 3 B:3 4 C:4 3 D:4 4

# 解题思路:

逐个分析列表元素:

1. "abcd" → 包含"ab"和"cd" → n=1, m=1

2. "ab" → 只包含"ab" → n=2, m=1 # 3. "cd" → 只包含"cd" → n=2, m=2 # 4. "cdab" → 包含"ab"和"cd" → n=3, m=3

注意:判断条件 "ab" and "cd" in line → 等价于 ("ab"为True) and ("cd" in line),实际应写 "ab" in line and "cd" in line(本题巧合结果一致)

代码

python 复制代码
ls = ["abcd","ab","cd","cdab"]
n, m = 0, 0
for line in ls:
    if "ab" and "cd" in line:  # 建议修正为:"ab" in line and "cd" in line
        n += 1
        m += 1
    elif "ab" in line:
        n += 1
    elif "cd" in line:
        m += 1
print(f"程序运行结果:n={n}, m={m}")
print(f"第10题答案:A")

11.题目:以下程序的输出结果是( ): ls=[11,22,33,44] for i in ls: if i=="33": print("找到!i=",i) break else: print("未找到...") A

A: 未找到... B: 未找到... 未找到... 找到!I=33 C:未找到... 未找到... 未找到... 未找到... D:找到!I=33

# 解题思路:

1. 列表ls中的元素是整数类型(11,22,33,44)

2. 判断条件 i=="33" → 整数和字符串比较,结果为False(类型不同)

3. for-else 结构:循环正常结束(未触发break)时执行else块 # 4. 循环遍历所有元素后未找到匹配项,执行else → 输出"未找到..."

代码

python 复制代码
ls = [11,22,33,44]
for i in ls:
    if i == "33":  # 错误:应改为 i == 33(类型匹配)
        print("找到!i=", i)
        break
else:
    print("未找到...")
print("补充说明:若要找到33,需将条件改为 i == 33(整数比较)")
print(f"第11题答案:A")

12.题目:以下程序的输出结果是( ): k=0 for i in range (4): for j in range(i+1): k+=j if j>1: break print(k) C

A:5 B:6 C:7 D:8

# 解题思路:

外层循环 i 取值:0,1,2,3(range(4))

内层循环 j 取值:range(i+1),且 j>1 时break: # 1. i=0 → j=0 → k +=0 → k=0(j不大于1,不break) # 2. i=1 → j=0 → k +=0(k=0);j=1 → k +=1(k=1)→ 内层结束 # 3. i=2 → j=0 → k +=0(k=1);j=1 → k +=1(k=2);j=2 → k +=2(k=4)→ j>1,break # 4. i=3 → j=0 → k +=0(k=4);j=1 → k +=1(k=5);j=2 → k +=2(k=7)→ j>1,break # 最终 k=7

代码

python 复制代码
k = 0
for i in range(4):
    print(f"外层i={i},内层j循环:", end="")
    for j in range(i+1):
        k += j
        print(f"j={j}(k={k})", end=" ")
        if j > 1:
            break
    print()
print(f"程序运行结果:k={k}")
print(f"第12题答案:C")
相关推荐
lixin5565562 小时前
基于神经网络的音乐生成增强器
java·人工智能·pytorch·python·深度学习·语言模型
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 43--添加allure测试报告显示信息和其他封装方法
python·学习·测试工具·allure
无垠的广袤2 小时前
【CPKCOR-RA8D1】RUHMI 转换 AI 模型
人工智能·python·嵌入式硬件·开发板
aiguangyuan2 小时前
从词袋到TF-IDF:sklearn文本特征工程实战指南
人工智能·python·nlp
数据知道2 小时前
PostgreSQL 实战:详解 UPSERT(INSERT ON CONFLICT)
数据库·python·postgresql
June bug2 小时前
(#数组/链表操作)寻找两个正序数组的中位数
数据结构·python·算法·leetcode·面试·职场和发展·跳槽
李昊哲小课2 小时前
奶茶店销售额预测模型
python·机器学习·线性回归·scikit-learn
电商API&Tina2 小时前
电商API接口的应用与简要分析||taobao|jd|微店
大数据·python·数据分析·json
郝学胜-神的一滴2 小时前
深入理解Linux套接字(Socket)编程:从原理到实践
linux·服务器·开发语言·网络·c++·程序人生·算法