Python小程序中使用append方法出现结果异常的技术求助
问题分析与修复
你遇到的问题很清晰:输出文本里所有的s都不见了,这完全是代码里的条件分支逻辑出了问题。
咱们拆解下你的代码逻辑就能发现问题:
- 当字符是
.:跳出循环,这部分没问题 - 当字符是
s:只执行了ses +=1统计数量,但完全没把s添加到sentence列表里 - 第三个
elif的条件init[i] != '.' or init[i] == 's'不仅逻辑冗余,而且因为前面已经匹配了s的情况,这个分支根本不会处理到s字符
说白了就是:你统计了s的数量,却把s本身排除在了输出文本之外。
修复后的代码
init = input() sentence = [] ses = 0 # 直接遍历字符比按索引循环更简洁直观 for char in init: if char == '.': break # 统计s的操作独立出来 if char == 's': ses += 1 # 只要不是句号,不管是不是s都加入sentence sentence.append(char) print(''.join(sentence)) print(ses)
关键修改说明
- 把循环改成直接遍历输入字符串的字符
for char in init,比用索引循环更易读也不容易出错 - 去掉了冗余的
elif分支,让统计s和添加字符到列表变成两个独立操作——只要字符不是句号,就加入输出文本,同时如果是s就额外计数
测试输入It is not a simple task.,就能得到你想要的预期输出:
It is not a simple task
3
内容的提问来源于stack exchange,提问作者Coverkincel
相关产品推荐
相关产品推荐

