Python 识读插画

考点清单

  • 表达式求值://、%、**、/ 的结果与类型;运算符优先级
  • 类型转换:int()、float()、str();"12"+"3" 与 12+3 的天壤之别
  • 分支跟踪:if-elif-else 只走一条路
  • 循环跟踪:range 三参数、累加/累乘模式、break 与 continue
  • 列表/字典/字符串的常见操作结果
  • 函数:return 与 print 的区别(经典大坑)

读程序题的方法只有一个:跟踪表。列出变量名,程序走一行、记一行,绝不靠"感觉"。下面每个题型给一道例题,都用跟踪的方式拆给你看。

题型一:表达式求值

例题:x=7,y=2,求 x//y、x%y、x**y、(x+y)/2。

  • x//y = 3(整除,只取商的整数部分)
  • x%y = 1(取余,7 里装 3 个 2,还剩 1)
  • x**y = 49(乘方,7 的 2 次方)
  • (x+y)/2 = 4.5(只要是 /,结果就是小数,哪怕除得尽)

易混点:// 和 % 是一对搭档:a//b 是商、a%b 是余,这也是判断奇偶(n%2)、取个位(n%10)的底层工具。

题型二:分支跟踪

例题:

score = 85
if score >= 90:
    level = "A"
elif score >= 80:
    level = "B"
elif score >= 60:
    level = "C"
else:
    level = "D"
print(level)

跟踪:score=85,第一个条件 85>=90 不成立;第二个 85>=80 成立,level="B",后面整条链直接结束(elif 链只走一条路,哪怕后面条件也成立)。输出 B。

题型三:循环跟踪(重头戏)

例题 1(累加):

s = 0
for i in range(1, 10, 2):
    s = s + i
print(s)

range(1, 10, 2) 依次给出 1、3、5、7、9(从 1 起、不到 10、步长 2)。s 依次变 1、4、9、16、25。输出 25。

例题 2(累乘):

n = 5
f = 1
while n > 1:
    f = f * n
    n = n - 1
print(f)

跟踪:f 依次 5、20、60、120;n 减到 1 时停。输出 120(这就是 5 的阶乘)。认出"累加用 s=0 打底、累乘用 f=1 打底"这个模式,这类题就通杀一半。

例题 3(break 与 continue):

for i in range(1, 6):
    if i == 3:
        continue
    print(i, end=" ")

continue 是"跳过这一轮":i=3 时跳过打印,其余照常。输出 1 2 4 5。把 continue 换成 break("整个循环停了"),输出就变成 1 2。这两个词的区别,考试百考不厌。

题型四:数据的操作结果

例题:

a = [3, 1, 2]
a.append(4)
a.sort()
print(a)
print(a[0] + a[-1])

append 把 4 加到末尾 → [3,1,2,4];sort 从小到大排序 → [1,2,3,4]。a[0]=1,a[-1]=4(倒数第一个),相加输出 5。

字符串也常考拼接:"2025" + "03" 的结果是 "202503"(字符串相加是拼接,不是算术!),"ab" * 3 是 "ababab"。

题型五:函数的返回值大坑

例题:

def add(a, b):
    print(a + b)

r = add(2, 3)
print(r)

先输出 5(函数里的 print 打的)。然后——函数没有 return,所以 r 拿到的是 None,第二行输出 None。

记住:print 是"说出来给人看",return 是"把结果交回去"。函数要让外面用它的计算结果,必须 return。这一坑不踩,胜过背十个函数。

易错点提醒

1. / 的结果永远是小数(float),哪怕 6/3 也是 2.0。

2. range 含头不含尾:range(1, 5) 只有 1、2、3、4 四个数。

3. elif 链只走一条:命中一个,后面的条件再成立也不看。

4. input() 读进来的永远是字符串,要做算术先 int() 转换(Python 课第四课的老话,考试同样爱考)。

自测 10 题(先做,再点开对答案)

1. 表达式 7//2 + 7%2 的值是( )

A. 3 B. 4 C. 4.5 D. 5

2. range(2, 8) 一共产生几个整数( )

A. 5 个 B. 6 个 C. 7 个 D. 8 个

3. 运行下面程序,输出是( )

s = 0
for i in range(5):
    s = s + i
print(s)

A. 10 B. 15 C. 20 D. 0

4. 表达式 "Py" * 2 + "thon" 的结果是( )

A. "Python" B. "PyPy"+"thon" C. "PyPython" D. 报错

5. 运行下面程序,循环体一共执行几次( )

n = 0
while n < 3:
    n = n + 1

A. 2 次 B. 3 次 C. 4 次 D. 无限次

6. score=72 时,题型二例题中的程序(A:≥90,B:≥80,C:≥60)输出( )

A. A B. B C. C D. D

7. 运行下面程序,输出是( )

a = [1, 2, 3]
a.pop()
print(a)

A. [1, 2] B. [2, 3] C. [1, 2, 3] D. 3

8. 某函数内部只有 print 没有 return,调用它并把结果赋给变量,变量的值是( )

A. 0 B. 空字符串 C. None D. 报错

9. 表达式 int("12") + 3 的值是( )

A. "123" B. 15 C. "15" D. 报错

10. 运行下面程序,输出是( )

for i in range(10):
    if i == 4:
        break
    print(i, end="")

A. 0123456789 B. 0123 C. 01234 D. 456789

参考答案(点开)

1. B(7//2=3,7%2=1,合计 4)

2. B(2、3、4、5、6、7,共 6 个)

3. A(0+1+2+3+4=10;注意 range(5) 到 4 为止)

4. C("PyPy" + "thon")

5. B(n 变为 1、2、3 后条件不成立)

6. C(72 不够 B,落进 C 档)

7. A(pop 弹出并去掉最后一个 3)

8. C

9. B(先转换成整数 12,再相加)

10. B(i=4 时 break,后面的都不打印,4 本身也不打印)

下一课预告:信息系统与网络——把高一理论那 9 课里的系统、网络、物联网按考试口径串起来。

More

相关教程