python
2017-02-13 6 views 0 likes 
0
number = raw_input("Please enter the fixture number: ") 
    myfile = open('file.txt') 
    for line in myfile: 
     item = line.split(',') 
     if item[0] == number: 
      title = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format('Fixture number', 'date', 'nickname1', 'nickname2', 'Fixture Played', 'Winning Nickname') 
      print(title) 
      result = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format(item[0],item[1],item[3],item[4],item[5],item[6]) 
      print(result) 
     elif item[0] != number: 
      print("not exist") 

Привет Я новичок в Python, так что я недавно столкнулся с проблемой моегоПочему мой код печатает несколько раз?

elif item[0] != number: 

является печать «не существует» для количества строк в моем файле , как я могу получить его на печать только один раз, если это неправильно?

+0

Если вы не возражаете, чтобы ваш цикл был закрыт после 'item [0]! = Number', вы можете просто добавить' break' после функции печати – JGut

+0

@JGut, которая выйдет из цикла после первого несоответствия , Вероятно, это намерение отсканировать весь файл для соответствия –

ответ

1

Установите флаг, если item[0] == number - True. Установите этот флаг после того, как цикл завершается, и печать "not exist" если флаг установлен:

myfile = open('file.txt') 
found = False 
for line in myfile: 
    item = line.split(',') 
    if item[0] == number: 
     found = True 
     title = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format('Fixture number', 'date', 'nickname1', 'nickname2', 'Fixture Played', 'Winning Nickname') 
     print(title) 
     result = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format(item[0],item[1],item[3],item[4],item[5],item[6]) 
     print(result) 

if not found: 
    print("not exist") 

Альтернативой является использование else варианта с для цикла, однако, что требует, чтобы вы хотите напечатать только в первый раз что item[0] == number - True (потому что вам нужно будет break выйти из цикла, чтобы предотвратить запуск предложения else).

0

Вы можете прикрепить else пункт к for loop, как это:

number = raw_input("Please enter the fixture number: ") 
myfile = open('file.txt') 
for line in myfile: 
    item = line.split(',') 
    if item[0] == number: 
     title = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format('Fixture number', 'date', 'nickname1', 'nickname2', 'Fixture Played', 'Winning Nickname') 
     print(title) 
     result = '{0:20} {1:20} {2:20} {3:20} {4:20} {5:20}'.format(item[0],item[1],item[3],item[4],item[5],item[6]) 
     print(result) 
     break 
else: 
    print("not exist") 

Обратите внимание на break. Цикл for выйдет после первого совпадения (через break). Если цикл цикла заканчивается нормально (т. Е. Нет совпадения), будет выполняться блок else

+0

, что было бы хорошей заменой для .rstrip() –

Смежные вопросы