CS50 Week6 Python可读性项目:连续句末符号的句子计数优化问询
解决CS50 Readability项目中连续句末符号重复计数的问题
你的核心问题是原代码会把连续的句末符号(比如!!!、..)重复计数,导致句子数统计错误。这里提供两种实用的优化方案:
方案一:跟踪前一个字符状态
通过记录上一个字符是否为句末符号,确保只有当当前句末符号是一组连续符号的第一个时,才计数。
优化后的代码:
def countSentences(input): counterS = 0 prev_char = None for symbol in input: # 仅当当前是句末符号,且前一个不是句末符号时计数 if symbol in ['.', '!', '?'] and (prev_char not in ['.', '!', '?']): counterS += 1 prev_char = symbol return counterS
方案二:使用正则表达式(更简洁)
利用正则匹配连续的句末符号组,直接统计组数就是正确的句子数。
优化后的代码:
import re def countSentences(input): # 匹配一组连续的句末符号,统计匹配到的数量 sentence_groups = re.findall(r'[.!?]+', input) return len(sentence_groups)
两种方案都能处理连续句末符号的情况,比如输入Hello!!! How are you??会被正确统计为2个句子,而不是5个。
内容的提问来源于stack exchange,提问作者Said Dumuzi
相关产品推荐
相关产品推荐

