如何使用排列找到所有可能的单词?

-7 投票
1 回答
509 浏览
提问于 2025-04-17 07:24

我正在为我的编程课做一个项目,这里有五个我正在努力实现的目标。谢谢你的帮助!

  1. 有效单词的列表会保存在一个叫做words.txt的文件里。
  2. 需要输入的内容只能是2到8个字母的组合。
  3. 比如,输入可以是“polo”。
  4. 从words.txt文件中找到所有可能的有效单词,这些单词是根据输入的内容来的。
  5. 可能的结果有:“poo”、“pool”、“loop”、“polo”。

    import random
    import itertools
    
    file_name='words.txt'
    DEBUG=True
    
    def load_words():
        try:
            f=open(file_name,'r')
            str1=f.read()
            f.close()
        except:
            print('Problem opening the file',file_name)
        list1=[]
        list1=str1.split()
        if DEBUG:
            length=len(list1)
            print('Number of words is',length)
            print(list1[0],list1[length//2],list1[-1])
            for i in range(10):
                print(list1[random.randint(1,length)])
        return(list1)
    
    def is_valid(str1,list1):
        valid=False
        count=0
        if str1 in list1:
            valid=True
        return valid
    
    def generate(letters):
        print(len(letters))
        count=1
        answers=[]
        for length in range(2,len(letters)+1):
            for x in itertools.permutations(letters,length):
                word=''
                for let in x:
                    word+=let
                print(word)
                if is_valid(word):
                    answers.append(word)
                count+=1   
            print(count,x)
            return(answers)
    
    def main():
        words=load_words()
        generate('abcde')
        guess=input('Check a word')
        if is_valid(guess.upper(),words):
            print(guess,'is a real word')
        else:
            print(guess,'is not a real word')
    
    main()
    

1 个回答

1

关于这个错误,应该把这行代码 print(list1[random].randint(1,length)) 改成 print(list1[random.randint(1,length)])

撰写回答