2017-05-14 71 views
0

代码:蟒纹消除多次打印输出

x = ['1', '2', '3'] 
y = ['a', 'b', 'c'] 
rangeend = len(x) 
for i in range(0, rangeend): 
    with open("file20.txt") as f: 
     for line in f: 
      count = 0 
      line = line.strip() 
      z = line.split(" ") 
      if z[0] == x[i] : 
       count = 1 
       a = z[0], z[1] 
       b = x[i],y[i] 
       if a == b: 
        print "ok" 
        break 
       else: 
        print "Failed" 
        break 
      if count != 1: 
       print "{} not found".format(x[i]) 

file20.txt:

1 a 
2 b 
5 c 

x列表中有3file20.txt没有在开始该行的3(第一串)

我正在尝试的是我要打印的文件是3 not found,并且打印只能完成一次在最后。

注意:不仅元素3,任何元素如果x列表有但file20.txt文件行不在开始(第一个字符串)。我想要打印没有找到。

下面是代码输出和2实际上是存在的,但它是印刷2 not found(其实这不打印2 not found)和3是不存在的file20.txt但打印3 not found是正确的,但问题是,它是印刷3倍。我只是想要它打印3 not found,只有一次。

0 
('1', 'a') ('1', 'a') 
ok 
1 
2 not found 
('2', 'b') ('2', 'b') 
ok 
2 
3 not found 
3 not found 
3 not found 
+0

所以你想''1,2,3'找不到'''而不是分开打印每一行? – Chuck

+0

你的计数!= 1检查需要移出for循环,如果你不想重复 - 从我能理解的,这就是你想要的。现在它重复n次,其中n是文件中的行数。 – wave5459

+0

@sinewaver,如果我向外移动循环只有最后一个未找到的号码将打印。在这种情况下,我想要打印3和4,但是它是这样的:x = ['1','2','3','4']和['a','b','c','d']将只打印4 – asteroid4u

回答

0

移动if count != 1块内for循环外看起来像工作。你有没有试过!

x = ['1', '2', '3', '4'] 
y = ['a','b','c','d'] 
rangeend = len(x) 
for i in range(0, rangeend): 
    with open("bob.txt") as f: 
     for line in f: 
      count = 0 
      line = line.strip() 
      z = line.split(" ") 
      if z[0] == x[i] : 
       count = 1 
       a = z[0], z[1] 
       b = x[i], y[i] 
       if a == b: 
        print "ok" 
        break 
       else: 
        print "Failed" 
        break 
     if count != 1: 
      print "{} not found".format(x[i]) 
+0

上面的代码不能按预期工作,因为2在我们运行时会出现,它会告诉2没有找到,3没有找到 – asteroid4u

+0

我的不好,因为当我将'count!= 1'块移到外面时,看起来像是在工作。我相应地编辑了我的答案。 – praba230890