关于Python中使用Loop pass statement实现排除指定字符统计的代码咨询
Python中使用Loop pass statement实现排除指定字符统计的代码咨询
嘿,我来帮你捋捋这段代码的问题和正确实现方式哈!
你原本的代码意图是统计字符串myString里排除字符'3'后的元素数量,但原代码有个关键问题——把sum = 0放在了for循环的内部:
myString ='1 2 3 4 5 6 7 8 9 10 3' for num in myString: sum = 0 if num == '3': pass else: sum = sum + 1 print(sum)
这样每次循环都会把sum重置为0,最后输出的只是最后一次循环的计算结果,根本没法统计总数。
要实现你想要的效果,得把sum的初始化移到循环外面,修改后的正确代码是这样的:
myString = '1 2 3 4 5 6 7 8 9 10 3' sum = 0 # 初始化统计变量在循环外,保证累加不重置 for num in myString: if num == '3': pass # 遇到'3'就跳过,不执行统计操作 else: sum += 1 # 这里用sum +=1和sum = sum+1效果一样,更简洁 print(sum)
运行这段代码后就会输出11啦,这个数字刚好是原字符串里除了两个'3'之外的所有字符总数(原字符串总共13个字符,去掉2个'3',13-2=11)。
哦对了,这里的pass语句就是起到“占位符”的作用:当匹配到'3'时,什么都不做,直接跳过当前循环的剩余逻辑,进入下一次循环,刚好满足你排除指定字符统计的需求。
备注:内容来源于stack exchange,提问作者Omar Ahmed
相关产品推荐
相关产品推荐

