深耕专业教研,探索前沿技术
信息技术来源:2026年3月杭州二中高三开学适应性考试

第 13 题

答案与解析

第(1)小题

参考答案
  1. ch = ""

  2. ch

  3. 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]存在。