【发布时间】:2010-09-02 14:28:11
【问题描述】:
我正在编写一个有两种失败条件的游戏:
- 组成一个长度超过 3 个字母的单词。蜜蜂没事,啤酒不行。
- 组成一个不能变成更长的单词的单词。斑马还可以,斑马不行。
Wordlist 是单词列表,frag 是前一个片段,a 是玩家输入的新字母。所以 frag 可能看起来像 'app' 和一个可能的 'l' 与形成单词 apple 的想法。
def getLoser(frag, a, wordlist):
word = frag + a
if len(word) > 3:
if word in wordlist:
print 'word in wordlist'
return True
else:
for words in wordlist:
if words[:len(word)] == word:
print words,':', word
print 'valid word left'
return False
else:
print words[:len(word)]
print words,':', word
print 'false found'
return True
else:
return False
由于某种原因,当我输入我的第 4 个字母时,它会自动转到 for 循环中的 else,即使当我在交互式跟踪中的虚拟数据上单独测试时,for 循环中的 if 语句功能正常。
这是 frag alg 和单词列表中带有单词 algebra 的字母 e 的输出。
e
啊
aa : 阿尔格
发现错误
是的
有什么想法吗?
【问题讨论】:
-
Beer不正常和Zebra正常的逻辑是什么?规则 1 说它们都不行,规则 2 说它们都行,而您的断言/示例说明了它们的不同之处。对我来说似乎很矛盾。 -
@Alex:
Zebra根据第二个条件是不好的,但不是第一个。 比照为Beer。任何一种情况都意味着损失。