这份试卷旨在考察学员对Python核心基础知识的掌握程度,包括变量、数据类型、流程控制、函数、数据结构等关键概念,题目由浅入深,既有基础的选择题和填空题,也有需要动手实践的编程题。

Python 基础教程期中测试
考试时间: 90分钟 总分: 100分
选择题 (每题3分,共30分)
-
下列哪个是Python合法的变量名? A.
2variableB.my_variableC.my-variableD.global -
以下哪个数据类型是不可变的? A.
listB.dictC.setD.tuple -
执行
s = "Hello World"后,s[6]的值是什么? A. B.'W'C.'o'D. 会抛出IndexError异常
(图片来源网络,侵删) -
以下哪个循环会无限执行下去? A.
for i in range(10):B.i = 0; while i < 10: i += 1C.i = 1; while i: i -= 1D.for i in []: -
x = [1, 2, 3, 4],执行x.pop(1)后,x的值是多少? A.[1, 2, 3, 4]B.[1, 3, 4]C.[2, 3, 4]D.[1] -
关于函数,下列说法错误的是? A. 函数通过
def关键字定义。 B.return语句用于从函数中返回一个值。 C. 函数必须有参数。 D. 函数内部定义的变量是局部变量。 -
以下哪个表达式计算的是
10除以3的余数? A.10 / 3B.10 // 3C.10 % 3D.10 \ 3
(图片来源网络,侵删) -
my_dict = {'name': 'Alice', 'age': 25},如何获取'name'对应的值? A.my_dict('name')B.my_dict['name']C.my_dict.get('name')D. B和C都正确 -
if not (False or True) and True:的布尔值是? A.TrueB.FalseC.NoneD.0 -
以下哪个代码块可以正确地交换变量
a和b的值? A.a = 1 b = 2 a = b b = a
B.
a = 1 b = 2 b, a = a, b
C.
a = 1 b = 2 temp = a a = b b = temp
D. B和C都正确
填空题 (每空2分,共20分)
- Python中,用于获取用户输入的函数是 ____。
- 一个列表
my_list = [10, 20, 30],使用for循环遍历它的语法是for item in ________。 - 在
if-elif-else结构中,elif的数量是 ____(有限/无限)的。 - 字典中的元素通过键来访问,而不是通过索引,所以字典是 ____ 的数据结构。
- 要判断一个变量
num是否为偶数,可以使用表达式num % 2 ________ 0。 - Python中,
range(5)会生成一个从 ____ 到 ____(不包括)的数字序列。 - 函数内部的局部变量和函数外部的全局变量同名时,函数内部默认会访问 ____ 变量。
- 字符串
"Python"的长度是 ____。 - 使用 运算符连接两个列表,如
[1, 2] + [3, 4],结果是 ____。 - 要在字符串中换行,可以使用转义字符
________。
阅读程序题 (每题5分,共20分)
请写出以下代码的执行结果。
-
代码一:
for i in range(3): for j in range(2): print(f"i={i}, j={j}")输出结果:
-
代码二:
numbers = [1, 2, 3, 4, 5] total = 0 for num in numbers: if num % 2 == 0: total += num print(total)输出结果:
-
代码三:
def greet(name, greeting="Hello"): return f"{greeting}, {name}!" print(greet("Alice")) print(greet("Bob", "Hi"))输出结果:
-
代码四:
s = "abracadabra" print(s[1:5]) print(s[::2])
输出结果:
程序填空题 (每空5分,共15分)
要求,补全以下代码。
-
题目: 计算从1到100所有整数的和。
total_sum = 0 for i in range(1, ________): total_sum += ________ print(f"1到100的和是: {total_sum}") -
题目: 判断一个列表中是否包含负数。
my_numbers = [10, 20, -5, 30, 40] has_negative = False for num in my_numbers: if ________: has_negative = True break # 找到一个后立即退出循环 if has_negative: print("列表中包含负数。") else: print("列表中不包含负数。") -
题目: 定义一个函数,接收一个列表作为参数,并返回列表中的最大值。
def find_max(numbers): if not numbers: return None # 如果列表为空,返回None max_num = numbers[0] for num in numbers: if num > max_num: ________ return max_num print(find_max([10, 50, 20, 100, 5])) # 应该输出 100
编程题 (共15分)
编写一个程序,实现一个简单的猜数字游戏**。
游戏规则:
- 程序随机生成一个1到100之间的整数。
- 让用户输入一个猜测的数字。
- 程序根据用户的输入给出提示:“猜大了!”、“猜小了!”或“恭喜你,猜对了!”。
- 如果猜对了,游戏结束,如果猜错了,用户可以继续猜测,直到猜对为止。
要求:
- 使用
random模块的randint()函数来生成随机数,记得先导入模块。 - 使用一个
while循环来持续接收用户的猜测。 - 需要将用户输入的字符串转换为整数。
请编写完整的代码:
# 在此处开始编写你的代码
参考答案
选择题
- B
- D
- B (字符串索引从0开始)
- C (
i从1开始,每次减1,永远大于0) - B (
pop(index)会移除指定索引的元素) - C (函数可以没有参数)
- C ( 是取模运算符)
- D (两种方式都可以)
- B (先算括号内
False or True为True,再算not True为False,False and True为False) - D
填空题
input()my_list- 有限
- 无序
0,5- 局部
6[1, 2, 3, 4]\n
阅读程序题
-
输出结果:
i=0, j=0 i=0, j=1 i=1, j=0 i=1, j=1 i=2, j=0 i=2, j=1 -
输出结果:
6 -
输出结果:
Hello, Alice! Hi, Bob! -
输出结果:
brac aacaa
程序填空题
101,inum < 0max_num = num
编程题
import random
def guess_the_number_game():
"""
一个简单的猜数字游戏。
"""
# 1. 生成1到100之间的随机数
secret_number = random.randint(1, 100)
print("欢迎来到猜数字游戏!我已经想好了一个1到100之间的整数。")
while True:
# 2. 获取用户输入
try:
guess_str = input("请输入你猜的数字: ")
guess = int(guess_str)
except ValueError:
print("输入无效,请输入一个整数。")
continue # 如果输入的不是数字,则跳过本次循环,重新输入
# 3. 比较并给出提示
if guess > secret_number:
print("猜大了!")
elif guess < secret_number:
print("猜小了!")
else:
print(f"恭喜你,猜对了!答案就是 {secret_number}。")
break # 4. 猜对后,退出循环
# 启动游戏
if __name__ == "__main__":
guess_the_number_game() 