AI for Youth Academy 青少年AI研究计划

第一年 · 第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 等于 1False 等于 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)

输出:02468,每个一行。循环 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 > 0False,但 temp == 0Trueor 只要有一个是 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 = 10print 输出它。

第18题:以下代码输出什么?

def greet(name):
    print("Hello " + name)

result = greet("Spike")
print(result)
显示答案

输出两行:

Hello Spike
None

greet 函数内部用 print 输出了 Hello Spike,但它没有 return 语句,所以返回值是 Noneresult 就是 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) = 9square(4) = 169 + 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 = 20BIG_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 > 12False,走 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)
显示答案

返回 150int(90 * 20 / 12) = int(150.0) = 150

这个函数计算:想让从动轮转 input_deg 度,主动轮需要转多少度。它是一个通用版的齿轮比函数——把之前写的 small_drive_midmid_drive_small 等都统一了,只需传入不同的齿数就行。