信息技术来源:2026年3月杭州二中高三开学适应性考试
第 13 题
答案与解析
第(1)小题
参考答案
ch = ""
ch
pairs += count // 2
程序分析
s = "2,5,2,3,4,3,6,3"
a = [0] * 11
ch = ""
for char in s:
if char == ",":
if ch:
h = int(ch)
a[h] += 1
①
else:
ch += char
if ②:
h = int(ch)
a[h] += 1程序逐个读取字符串s中的字符,非逗号字符通过ch += char依次拼接到ch中。遇到逗号且ch非空时,int(ch)将整段数字转为颜色编号h,a[h] += 1按该编号累计筷子根数,因此a的下标表示颜色编号,元素值表示相应根数;a[0]不对应题中的颜色。
for i in range(1, len(a)):
if a[i] % 2 == 1:
print("落单筷子颜色编号为", i)循环按颜色编号i访问a。a[i]为奇数时,同色筷子两根配成一双后会余下一根,因此输出该颜色编号i。
pairs = 0
for count in a:
③
print("能够配对的筷子有" + str(pairs) + "双")循环直接遍历a中的根数,count对应当前颜色的筷子根数。输出以“双”为单位,空③需要把根数转换为双数并计入pairs。
填空分析
①
遇到逗号时,ch中的编号已转换并计数,接下来要重新拼接下一个编号,故填ch = ""。若不清空,后续数字会接在已统计的编号后。
②
字符串末尾没有逗号时,最后一个编号还保存在ch中,需在循环结束后补计一次;ch为空时则不能执行int(ch)。因此判断ch非空,填ch,也可填ch != ""。
③
同色筷子每两根配成一双,count根可配count // 2双。将各颜色的双数累加到pairs,填pairs += count // 2。
第(2)小题
参考答案
正确
共用程序分析见第(1)小题。
沿用第(1)问补全后的程序,字符"1"、"4"会依次拼接成"14",再由int(ch)转为整数14,因此可以处理多位颜色编号。统计循环以len(a)为边界,只要数组能容纳全部编号,程序仍然正确。
这里的容量条件应理解为数组长度大于最大颜色编号。例如编号含14时,len(a)至少为15;仅大于颜色种类数不能保证a[14]存在。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_hangerkaixue_q013
