我正在努力在 Python 中使用求和。
我獲得輸入,然后自動更正并洗掉所有標點符號:text=input("Enter your text here: )
然后,我有一本字典:
bread = {"bread": 7, "sourdough crusts": 10}
我確定代碼bread中是否存在任何密鑰text:
result = re.findall('|'.join(bread), text)
我想找到所有值的總和,如果相應的鍵存在于text. 目前,我的代碼如下所示:
for sentence, rating in bread.items():
ssum = 0
for i in range(len(result)):
ssum = ssum rating
print("Sum: " str(ssum))
然而,這會產生令人難以置信的隨機結果。例如,如果
text = bread sourdough crusts
它說
ssum = 20
(即使它應該等于 17)。
這是怎么回事,我該如何解決?uj5u.com熱心網友回復:
通過在添加print(ssum)之后添加,您可能會很好地了解發生了什么以及為什么結果是“隨機的”。
7
14
10
20
Sum: 20
每個句子評分都被添加了len(result)幾次,但是您ssum = 0在每次回圈迭代中都進行了分配,因此您只回傳最后一個。相反,您只想檢查是否在回圈sentence中找到并在回圈外result分配ssum
import re
text = "bread sourdough crusts"
bread = {"bread": 7, "sourdough crusts": 10}
result = re.findall('|'.join(bread), text)
ssum = 0
for sentence, rating in bread.items():
if sentence in result:
ssum = ssum rating
print("Sum: " str(ssum))
uj5u.com熱心網友回復:
你寫的演算法不正確。您可以使用此代碼
import re
text=input("Enter your text here: ") # "bread sourdough crusts"
bread = {"bread": 7, "sourdough crusts": 10}
result = re.findall('|'.join(bread), text) # ['bread', 'sourdough crusts']
ssum = 0
for i in result:
ssum = bread[i]
print(ssum) # 17
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/487217.html
上一篇:獲取R中所有列的行之間的差異
