[英]CS50 Week 6 Python Readability
cs50 中的問題集 6 需要從 Python 的第 2 周開始重建可讀性項目
但是有一個問題我在C中寫代碼的時候沒有先遇到
程序對輸入中的每個字母使用 for 循環來檢查它是否都是句號、感嘆號或問號,它們都表示句子的結尾
但是 check50 向程序拋出的輸入有多個背靠背的句點,每個句點都算作自己的句子
所以問題是:
我如何改進這句話計數 function 只考慮其中一個時期,以防它背靠背遇到它們? 例如,我是否應該添加一個在 for 循環中看到下一個符號的條件,如果它也是一個句點,它只是忽略它?
def countSentences(input):
counterS = 0
for symbol in input:
if symbol in ['.', '!', '?']:
counterS += 1
return counterS
您可以將前一個符號保存在另一個變量中。 那么如果和當前符號相同,就不要算了。
def countSentences(input):
counterS = 0
previous_symbol = None
for symbol in input:
if symbol in ['.', '!', '?']:
if previous_symbol != symbol:
counterS += 1
previous_symbol = symbol
return counterS
如果您只關心計算句子而不是跟蹤使用了哪個標點符號,您可以使用re.sub
將重復的標點符號壓縮為單個句點 ( .
)。 function 如下所示
import re
def countSentences(input):
counterS = 0
for symbol in re.sub('[.!?]+', '.', input):
if symbol in ['.', '!', '?']:
counterS += 1
return counterS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.