2017-05-14 70 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