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

使用Pandas对CSV生成的DataFrame随机迭代并实现正误判断

基于Pandas DataFrame实现随机问答测验

1. 读取CSV文件生成目标DataFrame

先确保pyquiz.csv的列名与目标结构完全匹配(variables、statements、True of False),再用Pandas读取:

import pandas as pd

# 读取CSV生成DataFrame
df = pd.read_csv('pyquiz.csv')
# 可选:打印验证结构
print(df)

如果需要手动构造示例DataFrame用于测试,可直接使用:

df = pd.DataFrame({
    'variables': ['f1', 'f2', 'f3', 'f20'],
    'statements': ['f_state1', 'true_state1', 'f_state2', 'f_state20'],
    'True of False': ['F', 'T', 'F', 'F']
})

2. 随机迭代DataFrame

通过sample(frac=1)打乱DataFrame的行顺序,实现随机遍历:

import random

# 打乱行顺序,每次运行生成不同随机序列
shuffled_df = df.sample(frac=1, random_state=random.randint(1, 1000))

3. 实现问答逻辑

遍历打乱后的DataFrame,根据True of False列的正确答案判断用户输入,给出对应反馈:

user_start = input("输入'pyquiz'开始测验: ")
if user_start == 'pyquiz':
    for _, row in shuffled_df.iterrows():
        current_statement = row['statements']
        correct_ans = row['True of False']
        
        print(f"\n{current_statement}")
        user_ans = input("输入T或F: ").strip().upper()
        
        if user_ans == correct_ans:
            print("正确!")
            input("\n按回车继续: ")
        else:
            print("错误。")

逻辑说明

  • 用sample(frac=1)替代原列表的sorted(..., key=lambda _: random.random()),更贴合Pandas的操作习惯
  • 直接从每行获取陈述和正确答案,无需额外维护true_statements和false_statements两个列表
  • 对用户输入做了大写转换,避免大小写敏感导致的误判
  • 正确后等待用户回车再进入下一题,错误则直接提示后自动跳转

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:05:04