如何从给定的字母中找出可能的单词?

你好,
我正在python上写一个"拼字代码"。从给定的字母中获取可能的单词,我有一些问题。例如:
给定字母为:'c','r','n','*'
这里'*'可以是任何字母。
可能的词:"哭泣","玉米","运行"等。
proper_word_list
是包含所有英语单词的文件。
score_of_word
是计算单词分数的函数。

是给玩家的字母
以下是我的代码(只能在没有星星的情况下获得可能的单词):

选择 | 换行 | 行号
  1. def get_possible_words(hand, proper_word_list, score_of_a_letter_list) :
  2.  
  3.     possible_words = []
  4.     for j in range(len(proper_word_list)):
  5.         k = list(proper_word_list[j])
  6.         k.sort()
  7.         c = "".join(k)
  8.         d = list(hand)
  9.         d.sort()
  10.         m = "".join(d)
  11.         if c in m:
  12.             l = (score_of_word(c, score_of_a_letter_list), proper_word_list[j])
  13.             possible_words.append(l)
  14.     possible_words.sort()
  15.     possible_words.reverse()
  16.     return possible_words
  17.  

先感谢您。

# 回答1


我认为这是作业?我会这样处理:

保存给定的字母['c','r','n','*'] -

Lista

创建另一个列表,忽略星号['c','r','n'] -

ListB

打开文件,创建文件对象

初始化一个列表以包含匹配的单词 -

输出

使用变量在文件对象上迭代

线

剥离新线角色

如果剥离线的长度在长度之间

Lista

ListB

如果列表b中的每个字母都在线,请附加到

输出

看看这是否有帮助。我认为计算单词分数很简单,但是如果您还有任何问题,请再次发布。

# 回答2

@bvdet

感谢您对我的问题的友好关注。是的,我正在做我的Python作业。我有一个问题,即如何检查另一个列表中的每个元素是否包含在另一个列表中。例如:
a = ['a','b','c']和b = ['c','a']

# 回答3


集合这样做

选择 | 换行 | 行号
  1. a = set(['a', 'b', 'c'])
  2. b = set(['c', 'a'])
  3. print b.issubset(a) 
# 回答4

@WOOOEE

还有其他方法吗?因为我们无法在作业中使用任何设置命令。
谢谢你。

# 回答5


也许这会有所帮助:

选择 | 换行 | 行号
  1. >>> listA = ['a','b','c']
  2. >>> word = 'abacus'
  3. >>> [(c in word) for c in listA]
  4. [True, True, True]
  5. >>> None in [(c in word) for c in listA]
  6. False
  7. >>> 
# 回答6


你好!
我正在做功课,并试图从给定的字母中获取可能的话。
例如:
这是你的手:aonep
输入您的话:?
(Poppa,11)
(Nappe,9)
(Nappa,9)
(教皇,8)
(大便,8)
(Pepo,8)
(窥视,8)
(爸爸,8)
它必须只使用P一次,但这是更多。您能帮我找到我的错误吗?以下是我的代码:
给出了poser_word_list,并将其转换为另一个函数中的列表。
手是给玩家的信。

选择 | 换行 | 行号
  1.  def get_possible_words(hand, proper_word_list, score_of_a_letter_list) :
  2.  
  3.     possible_words = []
  4.     for j in range(len(proper_word_list)):
  5.         if len(proper_word_list[j]) <= len(hand):
  6.             str1 = ""
  7.             for letter in proper_word_list[j] :
  8.                 if letter in hand:
  9.                     str1 = str1 + letter 
  10.                 if '*' in hand:
  11.                     num_of_l = len(str1)
  12.                     num_of_ast = hand.count('*')
  13.                     num_dif = len(proper_word_list[j]) - num_of_l
  14.                     if num_of_ast >= num_dif:
  15.                         str1 = proper_word_list[j]
  16.                 else:
  17.                     str1
  18.         if str1 == proper_word_list[j]:
  19.             l = (score_of_word(str1, score_of_a_letter_list), str1)
  20.             possible_words.append(l)
  21.     possible_words.sort()
  22.     possible_words.reverse()
  23.     return possible_words
  24.  

先感谢您。

标签: python

添加新评论