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,那么切片aList3:7得到的值是(B)

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

# 解题思路:

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

2. aList3: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")
相关推荐
阿正的梦工坊3 分钟前
【Rust】15-Rust 内存布局、Drop 顺序与 unsafe 边界
开发语言·rust
我认不到你4 分钟前
【开源、教程】RAG全流程实现(java+完整代码):第二弹
java·开发语言·人工智能·深度学习·ai·语言模型·开源
AKA__Zas16 分钟前
初识多线程plus(2.0)
java·开发语言·学习方法
Rabitebla17 分钟前
C++ 多态详解:从概念到虚表底层原理(代码轰炸)
开发语言·c++
砍材农夫28 分钟前
python 如何一次性安装项目所有依赖包(pip和uv)
开发语言·python·pip·uv
IpdataCloud29 分钟前
信贷审核中如何验证用户地址与IP属地一致性?用IP查询工具实现反欺诈
开发语言·tcp/ip·金融·php·ip
yijianace31 分钟前
Python爬虫项目实战:从 BeautifulSoup 到 XPath
爬虫·python·beautifulsoup
云水-禅心38 分钟前
解决MacOS 安装Python之后默认版本指向不正确问题
开发语言·python·macos
冰暮流星40 分钟前
javascript之this关键字
开发语言·前端·javascript
rit843249940 分钟前
基于Qt的串口上位机控制蓝牙小车程序
开发语言·qt