深耕专业教研,探索前沿技术
信息技术来源:浙江省县域教研联盟高三年级5月高考模拟考试

第 10 题

答案与解析

本题解析

参考答案

B

程序分析

i,c,t = 1,0,0
while i <= len(s)-1:
    if s[i] <= s[i-1]:
        c = c+int(s[t:i])
        t = i
    i += 1
print(c)

i 从1开始逐个向后移动,每轮比较相邻字符 s[i] 与 s[i-1]。若后一个字符更大,就继续扫描;若后一个字符小于或等于前一个字符,则将 s[t:i] 转为整数累加到 c,再令 t=i,从当前字符开始下一段。

t 初始为0,每次累加后移到新一段的起点,因此它记录当前连续递增段的起始下标。切片 s[t:i] 不包含下标 i,累加的是刚刚结束的那一段。

对字符串 142633189,触发累加的位置如下:

i 触发条件 累加的子串 累加后的 c
2 "2" ≤ "4" "14" 14
4 "3" ≤ "6" "26" 40
5 "3" ≤ "3" "3" 43
6 "1" ≤ "3" "3" 46

末段 189 一直递增,未再次触发累加;循环结束后直接输出 c,也没有补加末段。因此输出为 14+26+3+3=46。