python3.4中输入值与csv文件的比较

2024-09-30 08:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的问题,但我真的找不到一个正确的解决办法。在

我有一个csv文件,其中包含学生的姓名和注册的科目: 名称,主题1,主题2,主题3 学生1,MN1,MN2,MN3 学生2,BN1,BN2,BN3 学生3,MN4,MN5,MN6

学生需要输入自己的姓名和科目名称,以便检查他是否注册了该科目

我的代码:

import csv

Name = input("Please provide your name: ")
Subject = input("Please provide your Subject: ")

with open('students.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        if (row['name'] == Name and row['subject1'] == Subject or 
row['subject2'] == Subject or row['subject3'] == Subject):
            print ("You are registered. It won't take long to run your VM")
        else:
            print ("You are not registered")

我的问题是它给了我多个输出 输出: 请提供您的姓名:Student3 请提供您的主题:MN4 你没有注册 您没有注册 您已注册。运行你的虚拟机不会花很长时间

显然,它应该是: 您已注册。运行你的虚拟机不会花很长时间

你能帮我解决这个问题吗? 谢谢你


Tags: csvname名称主题inputyour学生row
3条回答

我相信字典最适合你:

import csv

data = {i[0]:i[1:] for i in csv.reader(open('filename.csv'))}

Name = input("Please provide your name: ")
Subject = input("Please provide your Subject: ")

if Subject in data[Name]:
    print("you are registered")
else:
    print("you are not registered")

注意,Python中的for循环有一个可选的else子句,当循环结束时没有break语句时,将执行该子句。。。在

您的代码打印循环的每个迭代。你想要的是只在循环的末尾打印。。。在

with open('students.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        if (row['name'] == Name and (row['subject1'] == Subject or row['subject2'] == Subject or row['subject3'] == Subject)):
            print("You are registered. It won't take long to run your VM")
            break
    else:
        print("You are not registered")

一个数据帧将是一个很好的结构来存储你的csv文件。请给它一个读here,不管怎样到你的代码。请参考以下代码。在

请安装熊猫和纽比

pip install pandas
pip install numpy

代码:

^{pr2}$

参考:

  1. pandas query

相关问题 更多 >

    热门问题