我正在尝试一项家庭作业,其中我应该检查句子中的某些单词。有一个要检查的单词列表,程序应该检查它从用户输入中获得的句子中的单词。
我已经解决了问题,但是一路上我尝试了一些我也希望能做的事情,但是没有成功。以下是两个不同的程序,其中一个有效,而另一个无效。唯一的区别是在 fin 中搜索 word_list [i] 的行。
from cs50 import get_string
from sys import argv
def main():
if len(argv) != 2:
print("Usage: python bleep.py dictionary")
exit(1)
fin = open(argv[1])
print("What message would you like to censor?")
message = get_string()
word_list = message.split()
# This variant works.
for i in range(len(word_list)):
if (word_list[i].lower() + '\n') in fin:
word_list[i] = '*' * len(word_list[i])
fin.seek(0)
# The following doesn't work.
# for i in range(len(word_list)):
# if word_list[i].lower() in fin.read():
# word_list[i] = '*' * len(word_list[i])
# fin.seek(0)
print(' '.join(word_list))
fin.close()
if __name__ == "__main__":
main()
假设我想用****审查“ heck”,但是第二个程序还审查了像“ he”这样的字符串,这只是“ heck”的一部分。
答案 0 :(得分:0)
"he" in "heck"
为真的问题。
第一个代码通过确保单词以\n
结尾来解决这个问题。
另一点:您正在读取用户输入中每个单词的文件。它效率更高且概率更高。更加容易编写,读取和调试,以读取一次文件并将其存储在字符串(或更好的分隔符字符串列表)中