练习9.3如何像计算机科学家一样思考

时间:2014-03-18 23:51:57

标签: python string list search

练习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

3 个答案:

答案 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())