【发布时间】:2011-09-22 23:12:20
【问题描述】:
我创建了一个函数,它接受一个单词和一串“禁止”字母,如果单词不使用任何字母,则返回 True。
def avoids(word,forbidden):
for letter in word:
if letter in forbidden:
return False
else:
return True
我想修改它,而不是使用“禁止”作为要避免的字母,而是提示用户放置几个字母并打印不包含任何字母的单词数。我还有一个 .txt 文档,其中包含这些单词以使其变得有趣。
这是我想出的错误。如果可能的话,我希望得到一些帮助和教育,因为我的“在线”老师从来不在身边提供帮助。请帮忙:)
def word_no_forbidden():
forbidden = input('pick 5 letters')
fin = open('words1.txt')
no_forbidden_word = 0
for line in fin:
word = line.strip()
for letter in word:
if forbidden in word:
continue
print word
这是我得到的错误,我理解它,但是我不确定如何处理这个......
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
word_no_forbidden()
File "C:/Python27/test.py", line 9, in word_no_forbidden
if forbidden in word:
TypeError: 'in <string>' requires string as left operand, not tuple
【问题讨论】:
-
旁注:特别是在发布 Python 代码时,确保保留缩进是值得的。粘贴代码后,选择您粘贴的代码并单击编辑器的
{}按钮或输入 Ctrl+K 将生成一个与您粘贴的缩进相同的代码块。 -
注意你的原始函数可以写成
return any(letter in forbidden for letter in word)或return set(word).isdisjoint(forbidden)。 -
@JohnFlatness 我在这个网站上显然是文盲。很抱歉我没有缩进......下次我一定会这样做。
-
您为
forbidden输入了什么确切?你使用的是哪个版本的 Python? -
@agf 我输入了:'a','b','c','d','e' 然后我想禁止等于这 5 个字母并从 .txt 中打印出单词没有这些字母的文件。我正在使用 python 2.7