数据检查例程不起作用

时间:2017-11-22 22:28:47

标签: python

我有一个包含5 x 7表格的文件: enter image description here 我想要验证检查是否有5,7或9;但是没有一个重复,即这些数字必须只出现一次。需要5和7,9是可选的,其余三列可以是0.我写了这段代码但它不起作用。我还想将有效行存储在单独的列表中。 我在python中尝试该程序如下

def validation ():
    numlist = open("scores.txt","r")
    invalidnum=0
    for line in numlist:
        x = line.count("0")
        inv1 = line.count("1")
        inv2 = line.count("2")
        inv3 = line.count("3")
        if x > 2 or inv1 > 1 or inv2 > 1 or inv3 > 1 or line not in ("0","5","7","9"):
        invalidnum=invalidnum+1
           print(invalidnum,"Invalid numbers found" 
        else:
            print("All numbers are valid in the list")

如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

以下是使用set

的示例
lolwat = []
for line in open('scores.txt'):
    numbers = set(line.split(','))
    if '5' in numbers and '7' in numbers:
        print('okay 5,7')
    elif '9' in numbers:
        print('okay 9')
    lolwat.append(numbers)
do_stuff_with(lolwat)

设置重复数字,确保每个数字都是唯一的,如5,7,9只发生一次。

答案 1 :(得分:0)

你需要学习如何将这样的问题分解成更小的部分:

例如,您想检查每一行:

for row in open('scores.txt'):
    check_row(row)

def check_row(row):
    ...

您希望将好的行保存到列表中:

good_rows = []
for row in ...:
    if check_row(row): good_rows.add(row)

一个好的行只包含一个' 5':

def check_row(row):
    number_of_fives = count_number_of(row, '5')
    if number_of_fives != 1:
        return False
    ...
    return True

def count_number_of(row, digit):
    ...

等等。