【问题标题】:How do I use permutation to find all possible words from an input? [closed]如何使用排列从输入中查找所有可能的单词? [关闭]
【发布时间】:2011-11-30 17:08:56
【问题描述】:

我正在为我的编程课做一个项目,这是我正在努力的 5 件事。感谢您的帮助!

  1. 有效单词列表将在 words.txt 中提供
  2. 要求只接受 2-8 个字母组合的输入
  3. 例如。输入将是“马球”
  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()
    

【问题讨论】:

  • 您希望帮助回答的实际问题是什么?简单地发布您的项目及其目标并不是一个具体的问题。
  • 现在我收到一个错误“TypeError:列表索引必须是整数,而不是模块”我无法弄清楚这是在哪里发生的。

标签: python permutation itertools


【解决方案1】:

就错误而言 print(list1[random].randint(1,length)) 应改为 print(list1[random.randint(1,length)])

【讨论】:

  • 谢谢,这让我克服了那个错误,现在我遇到“is_valid() 正好需要 2 个参数(1 个给定)”我猜它在我的 def generate() 下,但我没有知道除了单词之外要在论点中放入什么。
  • 不客气 :)...你把函数 is_valid 期望的对应列表放了..
猜你喜欢
  • 2013-09-26
  • 2013-08-04
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
相关资源
最近更新 更多