第一年 · 第11周
第十一章:Python基础测试
本测试涵盖你从第01周到第10周学过的所有Python内容。每道题先自己想出答案,再点击"显示答案"核对。共五个部分,28道题。
第1部分:内置函数(4题)
第1题:以下代码输出什么?
print( int("42") )
显示答案
42
int("42") 把字符串 "42" 转换成整数 42,然后 print 输出它。
第2题:以下代码输出什么?
print( type(3.14) )
显示答案
<class 'float'>
3.14 有小数点,所以它是 float(浮点数)类型。
第3题:以下代码输出什么?
print( len([10, 20, 30]) )
显示答案
3
len() 返回列表中元素的个数。这个列表有三个元素。
第4题:以下代码输出什么?
print( str(100) + str(200) )
显示答案
100200
str(100) 是字符串 "100",str(200) 是字符串 "200"。字符串的 + 是拼接,不是数学加法,所以结果是 "100200"。
第2部分:变量类型(4题)
第5题:以下代码执行后,x 的类型和值是什么?
x = 7 / 2
显示答案
类型:float,值:3.5
在Python中,/ 永远返回 float,即使两个操作数都是整数。
第6题:以下代码输出什么?
name = "LEGO" print(name * 3)
显示答案
LEGOLEGÓLEGO
字符串乘以整数会把字符串重复对应次数。
第7题:以下代码输出什么?
a = True b = False print(a + b)
显示答案
1
在Python中,True 等于 1,False 等于 0。所以 True + False = 1 + 0 = 1。
第8题:以下代码有什么问题?
age = "12" print(age + 3)
显示答案
TypeError:不能用 + 把字符串和整数相加。
age 是字符串 "12",不是整数。修复方法:print(int(age) + 3),输出 15。
第3部分:For循环(4题)
第9题:以下代码输出什么?
for i in range(4): print(i)
显示答案
输出四行:
0 1 2 3
range(4) 生成 0, 1, 2, 3(从0开始,到4之前停止)。每次循环打印一个数字。
第10题:以下代码输出什么?
total = 0 for n in [3, 5, 7]: total = total + n print(total)
显示答案
15
循环依次把 3、5、7 加到 total 上:0→3→8→15。
第11题:写一个for循环,打印 0 到 8 的所有偶数。
显示答案
for i in range(5): print(i * 2)
输出:0、2、4、6、8,每个一行。循环 0 到 4,每次乘以 2 就得到偶数。
第12题:以下代码输出什么?
words = ["hello", "world"] for word in words: for i in range(2): print(word)
显示答案
输出四行:
hello hello world world
外层循环遍历列表中的两个词。对于每个词,内层循环打印它两次。
第4部分:If / Else(4题)
第13题:以下代码输出什么?
x = 15 if x > 20: print("big") elif x > 10: print("medium") else: print("small")
显示答案
medium
x = 15,不大于20,但大于10,所以走 elif 分支。
第14题:以下代码输出什么?
temp = 0 print(temp > 0 or temp == 0)
显示答案
True
temp > 0 是 False,但 temp == 0 是 True。or 只要有一个是 True,结果就是 True。
第15题:写一段 if/elif/else 代码,根据变量 temp 的值输出:大于 30 输出 "hot",大于 15 输出 "warm",否则输出 "cold"。
显示答案
if temp > 30: print("hot") elif temp > 15: print("warm") else: print("cold")
用 elif 把条件串起来,Python 从上到下检查,第一个为 True 的分支执行后,其余全部跳过。
第16题:以下代码输出什么?仔细看!
score = 85 if score >= 90: grade = "A" if score >= 80: grade = "B" if score >= 70: grade = "C" print(grade)
显示答案
C
这里用了三个独立的 if,不是 elif!每个 if 都会单独判断。score = 85:第一个 if(≥90)不成立;第二个 if(≥80)成立,grade = "B";第三个 if(≥70)也成立,grade 被覆盖为 "C"。如果用 elif 就不会出这个问题。
第5部分:函数(12题)
第17题:以下代码输出什么?
def double(x): return x * 2 print(double(5))
显示答案
10
double(5) 返回 5 * 2 = 10,print 输出它。
第18题:以下代码输出什么?
def greet(name): print("Hello " + name) result = greet("Spike") print(result)
显示答案
输出两行:
Hello Spike None
greet 函数内部用 print 输出了 Hello Spike,但它没有 return 语句,所以返回值是 None。result 就是 None。
第19题:写一个函数 add(a, b),返回两个数的和。
显示答案
def add(a, b): return a + b
第20题:以下代码输出什么?
def square(n): return n * n print(square(3) + square(4))
显示答案
25
square(3) = 9,square(4) = 16,9 + 16 = 25。
第21题:以下函数有什么问题?
def subtract(a, b): a - b print(subtract(10, 3))
显示答案
输出 None。函数计算了 a - b,但没有用 return 返回结果。
修复:return a - b,这样就会输出 7。
第22题:根据以下代码,small_drive_mid(90) 返回什么?
SMALL_GEAR = 12 MID_GEAR = 20 def small_drive_mid(degree): return int(degree * MID_GEAR / SMALL_GEAR)
显示答案
150
int(90 * 20 / 12) = int(150.0) = 150。想让中齿轮转90度,电机需要让小齿轮转150度。
第23题:已知 MID_GEAR = 20,BIG_GEAR = 28。写一个函数 mid_drive_big(degree),计算想让大齿轮转 degree 度时,中齿轮需要转多少度。
显示答案
def mid_drive_big(degree): return int(degree * BIG_GEAR / MID_GEAR)
公式:主动轮度数 = 想要的从动轮度数 × 从动轮齿数 ÷ 主动轮齿数。
第24题:以下代码输出什么?
def add_one(x): return x + 1 print( add_one(add_one(3)) )
显示答案
5
从内到外:先算 add_one(3) = 4,再算 add_one(4) = 5。这就是函数嵌套。
第25题:用第22题的 small_drive_mid 函数,small_drive_mid(small_drive_mid(12)) 返回什么?
显示答案
33
第一步:small_drive_mid(12) = int(12 * 20 / 12) = 20
第二步:small_drive_mid(20) = int(20 * 20 / 12) = int(33.33) = 33
第26题:写一个函数 bigger(a, b),返回两个数中较大的那个。
显示答案
def bigger(a, b): if a > b: return a else: return b
用 if/else 比较两个数,返回较大的那个。
第27题:以下代码输出什么?
def mystery(a, b): if a > b: return a else: return b print(mystery(7, 12))
显示答案
12
7 > 12 为 False,走 else 分支,返回 b = 12。这个函数其实就是 max(a, b)。
第28题:阅读以下函数,然后回答:gear_ratio(90, 12, 20) 返回什么?这个函数的作用是什么?
def gear_ratio(input_deg, driver_teeth, driven_teeth): return int(input_deg * driven_teeth / driver_teeth)
显示答案
返回 150。int(90 * 20 / 12) = int(150.0) = 150。
这个函数计算:想让从动轮转 input_deg 度,主动轮需要转多少度。它是一个通用版的齿轮比函数——把之前写的 small_drive_mid、mid_drive_small 等都统一了,只需传入不同的齿数就行。