You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现两字符串列表比对 生成匹配结果列表并统计正误

字符串列表元素比对功能实现

核心实现规则

  • 逐位置对比玩家猜测列表与随机生成的食物列表,同位置值完全匹配标记O,否则标记X,所有标记结果存入correct_guess_list
  • 分两类统计匹配结果:
    • 值和位置完全匹配的食物总数
    • 值存在于随机列表、但位置不匹配的食物总数(重复元素按实际出现次数计数,已匹配完全的元素不重复统计)

完整可运行代码

import random
from collections import defaultdict

# 已实现的基础功能:定义可选食物、生成随机列表、接收校验玩家输入
food_list = ["salad", "steak", "noodles", "rice", "pasta", "chicken", "fish", "soup"]
random_food_list = random.choices(food_list, k=4)
player_guess_list = []

print("可选食物列表:", food_list)
for i in range(4):
    while True:
        guess = input(f"请输入第{i+1}个猜测食物:").strip()
        if guess in food_list:
            player_guess_list.append(guess)
            break
        print("输入不合法,请从给定可选列表中选择食物")

# 补充实现:位置比对与结果统计
correct_guess_list = []
correct_position = 0
matched_random_idx = set()
matched_guess_idx = set()

# 第一步:逐位置比对标记O/X,统计完全匹配数量
for idx in range(4):
    if player_guess_list[idx] == random_food_list[idx]:
        correct_guess_list.append("O")
        correct_position += 1
        matched_random_idx.add(idx)
        matched_guess_idx.add(idx)
    else:
        correct_guess_list.append("X")

# 第二步:排除已完全匹配的元素,统计值对位置错的数量
random_remain = defaultdict(int)
guess_remain = defaultdict(int)
for idx in range(4):
    if idx not in matched_random_idx:
        random_remain[random_food_list[idx]] += 1
    if idx not in matched_guess_idx:
        guess_remain[player_guess_list[idx]] += 1

wrong_position = 0
for food in guess_remain:
    wrong_position += min(guess_remain[food], random_remain.get(food, 0))

# 输出最终结果
print(f"比对标记列表:{correct_guess_list}")
print(f"Correct food in correct place: {correct_position}")
print(f"Correct food in wrong place: {wrong_position}")

示例验证

当随机列表为["salad", "rice", "salad", "rice"]、玩家输入为["salad", "salad", "rice", "rice"](原示例输入存在笔误)时,运行结果为:

  • 比对标记列表:['O', 'X', 'X', 'O']
  • 位置值全匹配数量:2
  • 值对位置错数量:2
    和预期输出完全一致。

内容的提问来源于stack exchange,提问作者Kurumi3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:54:15