练习9.3。编写一个名为avoids的函数,它接受一个单词和一串禁止字母,如果该单词不使用任何禁用字母,则返回True。 修改程序以提示用户输入一串禁用字母,然后打印不包含任何字母的单词数。你能找到排除最少数字的5个禁用字母的组合吗? 得到了第一部分:
def avoids(word,forb):
for letter in forb:
if letter in word:
return False
return True
挣扎着第二次,这是我的尝试:
fin=open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 2.7\words.txt','r')
def no_contain():
forb=raw_input('enter the forbidden letters')
tot=0
ct=0
for line in fin:
word=line.strip()
for word in fin:
tot+=1
for letter in forb:
if letter in word:
ct+=1
return tot-ct
得到一些有趣的答案。此外,您何时应该使用ct=0...ct+=1
技术而不是ct=ct+1
?
答案 0 :(得分:0)
试试这个:
def avoids(word, forb):
for letter in forb:
if letter in word:
return False
return True
def no_contain(fin):
forb = raw_input('enter the forbidden letters: ')
count = 0
for word in fin:
if avoids(word.strip(), forb):
count += 1
return count
if __name__ == '__main__':
fin = open('words.txt', 'r')
print no_contain(fin)
何时使用ct = ct + 1
代替ct = ct + 1
?
实际上,它们在python中是一样的,都会评估ct + 1
的结果,然后将它绑定到ct
,因为python中的int
类是不可变的。
答案 1 :(得分:0)
''' 练习9.3。编写一个名为voids的函数,该函数需要一个单词和一串禁止的字母, 如果单词不使用任何禁止的字母,则返回True。
修改程序以提示用户输入一串禁止的字母,然后打印 不包含任何单词的单词数。您能找到5个禁止的字母的组合吗 排除最少数量的单词? '''
def avoids(strg, word):
for letter in strg:
if letter in word:
return False;
return True;
fin = open('words.txt')
def No_Contain(strg):
count_word_no_contain = 0;
for line in fin:
result = avoids(strg, line.strip());
if(result == True):
count_word_no_contain += 1;
print(line.strip());
return count_word_no_contain;
print(avoids("HUY STRAUSS", "LION"));
strg = "lion king";
print("The number of words doesn’t have the letters of the string", strg, "is: ", No_Contain(strg));
''' 结果: 单词没有字母狮子王的字母的数目是:9971 '''
答案 2 :(得分:0)
forbidden=input("Enter the forbidden characters: ")
fin=open("words.txt")
def avoids():
for letter in fin: # Searches the letter in the file
word=letter.strip()
if forbidden not in word: #If forbidden char is not in the file
print(word)
print(avoids())