疫情问诊自动统计系统问卷选择题统计


def wenjuan():
    reuser=input('请再次输入您的用户名:')
    print(f'欢迎【{reuser}】用户参与疫情问诊自动统计系统!')
    xz1=[]
    xz2=[]
    xz3=[]
    xz4=[]
    xz5=[]
    wd1=[]
    wd2=[]
    xz1=input('1.有无发烧症状?\n(A)有 (B)无:')
    xz2=input('2.有无咳嗽症状?\n(A)有 (B)无')
    xz3=input('3.有无身体酸痛症状?\n(A)有 (B)无')
    xz4=input('4.有无咽喉不适症状?\n(A)有 (B)无')
    xz5=input('5.有无味觉、嗅觉不灵敏或失灵?\n(A)有 (B)无')
    wd1=input('6.已经持续多少天了?')
    wd2=input('7.有无其他不适?')
    with open('./tjlist.csv', 'a+', encoding='utf-8') as c:
        c.write(f'{xz1}{xz2}{xz3}{xz4}{xz5}')

(提供选择题结果统计功能:对所得到的的问诊结果中的选择问卷进行数据统计,将选择题部分的答案进行汇总显示。提供问答结果查询功能:对问答问卷进行敏感词过滤后将查询结果展示出来。)
怎样才可以把那个CSV里面的数据统计出来呀,把xz1~xz5的数据统计,就统计A和B,搜了网上的教程,感觉都不太对

望采纳

可以把 xz1~xz5 的数据放入一个 list 中,然后使用 list 的 count 方法统计 A 和 B 的数量,代码如下:

xz_list = [xz1, xz2, xz3, xz4, xz5]
a_count = xz_list.count('A')
b_count = xz_list.count('B')

print(f'A 的数量是 {a_count},B 的数量是 {b_count}')

如果希望更细致地统计每个问题中 A 和 B 的数量,可以使用一个字典来存储统计结果,然后再按照问题名称输出统计结果,代码如下:

xz_dict = {
    '有无发烧症状': xz1,
    '有无咳嗽症状': xz2,
    '有无身体酸痛症状': xz3,
    '有无咽喉不适症状': xz4,
    '有无味觉、嗅觉不灵敏或失灵': xz5
}

for question, answer in xz_dict.items():
    a_count = answer.count('A')
    b_count = answer.count('B')
    print(f'{question} 的 A 的数量是 {a_count},B 的数量是 {b_count}')

最后,如果你想把统计结果写入 CSV 文件中,你可以使用 Python 的 csv 模块,代码如下:

import csv

# 读取答案
answers = []
with open('./tjlist.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        answers.append(row)

# 统计答案数量
result = {'A': 0, 'B': 0}
for answer in answers:
    result[answer[0]] += 1

# 写入 CSV 文件
with open('./result.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(result.items())