对于上下文,它是一个口袋妖怪琐事机器人每隔一段时间在一个discord服务器上,我只是想尝试我的技能,使一个,虽然我的代码只适用于我的列表中的第一个单词(只是一个从Bulbasaur开始按数字排列的所有口袋妖怪的列表)。我有它,这样用户就可以用下划线的格式输入已知的字母,以及已知字母的字母。(例如,Bulbasaur可以是'_ _ l _ a s a _ _'(之间没有空格)用户还输入已知字母的数量,以供稍后在程序中使用。它读取列表,将其放入数组中,然后拉出所有与输入单词长度匹配的名字。然后它开始将每个字母与每个输入字母进行比较以寻找匹配,如果匹配的字母(数量)等于给出的输入数字,则显示“口袋妖怪是:还有口袋妖怪。问题是它只对一个口袋妖怪有效,其他的似乎都不起作用。我将在下面发布代码,如有任何帮助,将不胜感激:)
此外,如果需要该列表,我也可以添加该列表(超过500行)
poke = input("Letters and spaces given: ")
pokelen = input("Number of Letters given:")
print(pokelen)
pokelen = int(pokelen)
############################################
fid = open('pokemon.txt','r')
f = fid.readlines()
g = []
for i in f:
i = i.replace('\n', '')
g.append(i)
fid.close()
candidates = []
ticker = 0
while ticker != len(g):
if len(g[ticker]) == len(poke):
candidates.append(g[ticker])
ticker +=1
print(candidates)
############################################
start = []
end = []
ticker1 = 0
ticker2 = 0
done = 0
while done == 0:
while ticker1 != len(candidates):
if done == 1:
break
word = candidates[ticker1]
tick = 0
length = len(word)
a = 0
for i in word:
start.append(i)
tick += 1
tick = 0
for i in poke:
end.append(i)
tick += 1
while length != ticker2:
if start[ticker2] == end[ticker2]:
a += 1
ticker2 += 1
if a == pokelen:
print("The Pokemon is:",word)
break
ticker1 += 1
done = 1
print(done)
print(a)
############################################
3条答案
按热度按时间hivapdat1#
如果你不想使用正则表达式,你也可以通过比较字符串来实现!
首先,让我们定义一个函数来完成这个任务:
此函数在两种情况下执行
and
操作:zip
spokemon
和pattern
字符串,并逐个字符地迭代它们,检查是否所有字母对都相等。如果字符串很大,这可能是一个开销很大的操作。返回值是这两个条件的
and
,Python的短路逻辑确保了这个潜在的代价高昂的操作只在必要时才执行(如果两个字符串的长度不等,那么即使尝试匹配模式也没有意义)。假设我们已经有了口袋妖怪和模式字符串的列表:
我们只需要遍历口袋妖怪列表,对每个口袋妖怪运行
is_match
函数,并只选择is_match
为真的口袋妖怪。或者,作为一种列表理解,
如果你试图匹配一个模式,为多个口袋妖怪,这是很酷的!
fxnxkyjh2#
我不太确定while循环中的代码要做什么。我认为您需要将输入与潜在的口袋妖怪匹配。正如@RufusVS和@Barmar所建议的,可能有一种方法可以在while循环中不使用细节的情况下完成您要做的事情。
最后你会尝试做一个“刽子手游戏”吗?
如果你想一个字符一个字符地比较毒刺(我认为这是你的意图),那么这里有一个修改来做到这一点:
z5btuh9x3#
我们完成了这样的事情与我们的“捕鱼”(刽子手风格)齿轮在我们的不和谐机器人。我可能是错误的,你想在这里,但我认为它至少接近。
我们定义了一个函数来分散名字。
并且稍后使用它来调用它并等待它们的响应。
你可以在我们的开源repo上找到我们的fishing cog,了解我们所做的事情的完整“想法”,希望它能有所帮助。