如何移除列表中正确匹配两次的元素并实现计时

44 阅读2分钟

提供了一个词定义匹配小测验,在小测验中,需要匹配随机单词及其正确定义。

  • 希望在用户正确匹配随机单词及其正确定义两次后,从列表中移除该单词,同时保持其他三个随机定义。

huake2_00017_.png 2. 解决方案

  • 为了实现计时功能,可以使用 time 模块中的 time() 方法获取当前时间戳,在小测验开始时和结束时分别记录当前时间戳,然后计算出小测验的总时长。
  • 为了移除列表中正确匹配两次的单词,可以使用 while 循环遍历列表,并在每次循环中使用 if 语句检查该单词是否正确匹配了两次,如果是,则将其从列表中移除。
import time
import random

# 定义一个函数来获取当前时间戳
def get_timestamp():
    return time.time()

# 定义一个函数来计算两个时间戳之间的差值
def calculate_time_difference(start_timestamp, end_timestamp):
    return end_timestamp - start_timestamp

# 定义一个函数来移除列表中正确匹配两次的单词
def remove_correctly_matched_words(word_list, definitions_list):
    # 循环遍历列表中的每个单词
    for i, word in enumerate(word_list):
        # 获取该单词的正确定义
        correct_definition = definitions_list[i]

        # 计数该单词正确匹配的次数
        correct_matches = 0

        # 循环遍历用户输入的定义
        for user_definition in user_definitions:
            # 如果用户输入的定义与正确定义匹配,则计数该单词正确匹配的次数
            if user_definition == correct_definition:
                correct_matches += 1

        # 如果该单词正确匹配了两次,则将其从列表中移除
        if correct_matches >= 2:
            word_list.pop(i)
            definitions_list.pop(i)

# 定义一个函数来显示小测验结果
def show_quiz_results(word_list, definitions_list, time_difference):
    # 显示小测验结果
    print("小测验结果:")
    for i, word in enumerate(word_list):
        print(f"{i+1}. {word} - {definitions_list[i]}")

    # 显示小测验总时长
    print(f"小测验总时长:{time_difference:.2f} 秒")

# 定义随机单词列表
word_list = ["apple", "banana", "cherry", "dog", "elephant"]

# 定义随机定义列表
definitions_list = ["A red fruit", "A yellow fruit", "A red fruit with a pit", "A four-legged animal", "A large mammal with a trunk"]

# 获取小测验开始时的当前时间戳
start_timestamp = get_timestamp()

# 循环遍历列表中的每个单词
for i, word in enumerate(word_list):
    # 获取该单词的正确定义
    correct_definition = definitions_list[i]

    # 提示用户输入该单词的定义
    user_definition = input(f"请输入单词 '{word}' 的定义:")

    # 如果用户输入的定义与正确定义匹配,则计数该单词正确匹配的次数
    if user_definition == correct_definition:
        print("正确!")
    else:
        print("错误!")

# 获取小测验结束时的当前时间戳
end_timestamp = get_timestamp()

# 计算小测验的总时长
time_difference = calculate_time_difference(start_timestamp, end_timestamp)

# 移除列表中正确匹配两次的单词
remove_correctly_matched_words(word_list, definitions_list)

# 显示小测验结果
show_quiz_results(word_list, definitions_list, time_difference)