编写和验证CSV文件输入的问题

时间:2015-04-12 16:26:09

标签: python validation csv

对于计算任务,我被要求创建一个算术测验,并创建一个具有三个要求的数据库系统:

1.保持每个成员在测验中获得的分数的跟踪

2.学校的三个班级

3.data应分别为每个班级保留

根据我的计算老师的推荐,我决定将我的测验与我的数据库程序集成。我实际上使程序功能实现了跨越式发展,但代码中特别棘手的部分仍然存在:

form =''
while form == '':
    form = input("Hello there. Are you in class A, class B, or class C? ")

if form == "Class a" or "Class A" or "a" or "A" or "class a" or "class   A":
 print("Your class is " +form)
 myFile = open('classa.csv', 'a')
 myFile.write("A\n")
elif form == "Class b" or "Class B" or "b" or "B" or "class b" or "class B":
 print("Your class is " +form)
 myFile = open('classb.csv', 'a')
 myFile.write("B\n")
elif form == "Class c" or "Class C" or "c" or "C" or "class c" or "class C":
 print("Your class is " +form)
 myFile = open('classc.csv', 'a')
 myFile.write("C\n")
else:
form = input("You can only input A, B or C. ")

我曾尝试在线研究以尝试评估我的问题的解决方案,但我发现CSV和Python的文档非常差 - 主要是保证使用CSV并不难,只是对于一个不清楚的解释。 我已经评估了以下问题,但我不确定如何解决:

  1. 代码的验证部分无法正常运行。如果用户输入的响应不是已识别的输入列表的一部分,则意味着简单地重复该问题。情况是代码愉快地接受给它的任何输入,并且它不拒绝任何输入。其他尝试则反方向(任何输入都被拒绝,阻止代码继续)。我找不到合适的金发姑娘区。
  2. 写入CSV无法正常工作。大多数情况下,它要么忽略在测验中完成的任何事情,要么完全覆盖文件,这些都不是理想的结果。奇怪的是它只影响classa.csv - classb.csv和classc.csv似乎没有代码的任何交互属性。

1 个答案:

答案 0 :(得分:1)

您的语句总是评估为True,请使用in

if form in {"Class a" , "Class A" , "a" , "A" , "class a" , "class   A"}:

点击or "Class A"后,if返回True。您要求(if form == "Class a")("Class A"),因为所有非空字符串的评估结果为True,使用多个或多个字符的正确方法是:

if form == "Class a" or form == "Class A" or  form =="a".... 

但是对于使用in的多个值是一种更好的方法