以下是做错的题目原文:
单选第2题,小杨最近为了备考GESP,开始看网络上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,其中之一就是按照地理覆盖的范围来划分。那他平时上学所在的教学楼内的网络是一个( )。
A. PANB. LANC. MAND. WAN
单选第11题下面Python代码执行后输出是( )。
num = 0while num <= 5: num += 1 if num % 3: continue print(num, end='#')else: print(num)A. 3#6#B. 3#6#6C. 1#2#3#4#5#6#D. 1#2#3#4#5#6#6
单选第13题题目定义:一个数 N 是 M 的完整漂亮数,当且仅当同时满足以下三个条件:1. N 能被 M 整除;2. N 的某一位数字等于 M;3. N 的各位数字之和能被 M 整除。
给出的代码试图判断 N 是否为 M 的完整漂亮数,问以下说法正确的是( )。
N = int(input("请输入N,N必须是0或正整数:"))M = int(input("请输入M:M必须大于1小于等于9:"))Sum = 0 # 记录各位数之和Flag = False # 记录N是否含有Mwhile N != 0: num = N % 10 Sum += num if num == M: Flag = True N //= 10if (N % M == 0) and (Flag == True) and (Sum % M == 0): print(f"{N}是{M}的完整漂亮数")else: print(f"{N}不是{M}的完整漂亮数")选项:A. 代码能完成题目设定目标。B. 在 while 循环中 N 最终将变成0,因为代码 N% M 将总是满足条件,可以在 while 前增加一行代码 old_num = N,并将 N % M 改为 old_num % M,随后 print() 中的 {N} 改为 {old_num}。C. while 循环中 if 判断语句可以增加 else 子句,其内容为 Flag = False。D. 如果先后输入 0 和 3,则肯定会输出 0是3的完整漂亮数。
判断第四题
下面Python代码执行时,如果输入整数(包括负整数、0和正整数),其输出都将是 0。( )
N = int(input())while N: N //= 10print(N)我们来简要分析一下:
第2题错在计算机网络知识:教学楼网络属于局域网(LAN),需记住常见网络缩写(LAN/局域网Local Area Network,)(WAN/广域网 Wide Area Network)。
第11题考察 while-else 结构:循环正常结束时 else 会执行,因此在输出 3#6# 后还会打印一次 6,num % 3 为真(非零)时跳过打印, 有一个从整型转换为布尔值的过程。非零转换为True。答案为 B。
第13题暴露变量管理问题:原始输入 N 在循环中被“用光”变成0,后续判断必须使用副本,否则逻辑错误。
判断第4题看似简单,实则涉及整除边界。在正数的情况下,默认输入处理后最终 N 会变为0。但需注意为负数情况下的行为。例如负整数-123,如 -123 // 10 = -13(Python向负无穷取整),继续 -13//10=-2, -2//10=-1,-1//10=-1?等等,负数整除也是向下取整,因此会进入死循环。
这次二级真题实战,虽然总分不错,但精准暴露了四个容易被忽视的薄弱环节:
continue 的跳转逻辑、以及非零即真的布尔转换规则,稍有模糊就会导致逻辑误判;下一期,我们将继续刷二级真题,重点攻克这些“边角概念”。毕竟,四级之路,一级打基础,二级建框架,每一步都不能含糊,基础不牢,地动山摇。
互动时间:你或者孩子是否也曾被“负数整除”或“while-else”坑过?对 Python 的向下取整规则掌握了吗?欢迎留言分享你的经验!