我有一个包含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")
如果有人能帮助我,我将不胜感激。
答案 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):
...
等等。