首页 > 解决方案 > 输出与字符串匹配的列表中最接近的值?

问题描述

我正在刮一个国际象棋游戏。我想得到一个建议的举动。

best_move_dataset = Collection of played Moves in the History
move_done = is the move i have played if the app started

Solution-Output (best_move_dataset == move_done): nearest equality
f6
f5

这是我的代码,我真的不知道如何制作这个解决方案。

best_move_dataset = ['d4 Nc6 e4 e5 f4 f6','d4 Nc6 e4 e5 f4 f5','d4 Nc6 e3 e5 f4']

moves_done = 'd4 Nc6 e4 e5 f4'
moves_done_list = moves_done.split(' ')
len_moves_done = len(moves_done_list)

len_best_move = len(best_move_dataset)

for move_zaehler in range(len_moves_done):
        print(best_move_dataset[0])

我希望你们能理解如果你们有任何建议我可以如何改变这个更清楚的问题,那么请提醒我。

希望我能得到一些帮助。

此致

托拜厄斯

标签: pythonlistif-statementchess

解决方案


best_move_dataset = ['d4 Nc6 e4 e5 f4 f6','d4 Nc6 e4 e5 f4 f5','d4 Nc6 e3 e5 f4']
moves_done = 'd4 Nc6 e4 e5 f4'

best_sequences = [str_.split() for str_ in best_move_dataset]
moves_sequence = moves_done.split()
count = len(moves_sequence)
suggestions = []

for best_sequence in best_sequences:
    if len(best_sequence) > count:
        if moves_sequence == best_sequence[:count]:
            suggestions.append(best_sequence[count])

for suggestion in suggestions:
    print(suggestion)

输出:

f6
f5

说明:

在将移动序列字符串拆分为列表后,我们将完成移动的序列与历史(循环中)中的每个移动序列进行比较。for

如果该序列完成动作的序列长,并且其缩短的部分与完成动作的序列相同,我们将该序列的下一个动作添加到准备好的建议列表中。

然后在for循环中我们打印它们。


笔记:

您可以写而不是使用的列表推导:

best_sequences = []
for str_ in best_move_dataset:
    best_sequences.append(str_.split())

推荐阅读