Печать 2 строк при вводе пользователем?

#python-3.x

#python-3.x

Вопрос:

Я попытался напечатать 2 строки под кодом, который пользователь вводит из текстового файла.

мой текстовый файл :

 86947367
banana
5

78364721
apple
3

35619833
orange
2

84716491
sweets
8

46389121
chicken
10
  

Итак, если пользователь вводит, например 46389121 , тогда он будет печатать

 chicken
    10
  

Я пробовал :

 file = 'read_it.txt'
user = input('Enter code')

with open(file, 'r') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):  # enumerate will count and keep track      of the lines
      if line == user:
            print("{}n{}".format(lines[i 1], lines[i 2]))
  

но это дает мне вывод пустых строк, любая помощь, пожалуйста?

Комментарии:

1. Для начала вам нужно сделать отступ вашего if блока под вашим for циклом.

2. yh sry (в основном коде есть отступ)

3. Вы пробовали делать if line.strip() == user ? Потому что это, вероятно, не удовлетворяет if line == user , потому line что в конце есть новая строка, а user , вероятно, нет

4. выдает ошибку: строка вне диапазона индексов

Ответ №1:

Попробуйте удалить строку перед сравнением с использованием rstrip() :

 file = 'read_it.txt'
user = input('Enter code')

with open(file, 'r') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):  # enumerate will count and keep track      of the lines
      if line.rstrip() == user:
            print("{}n{}".format(lines[i 1], lines[i 2]))
  

Имейте в виду, что вместо того, чтобы загружать весь файл сразу, вы можете просто выполнить итерацию по нему следующим образом:

 file = 'read_it.txt'
user = input('Enter code')

with open(file, 'r') as f:
    for line in f:
        if line.rstrip() == user:
            print(next(f).rstrip())
            print(next(f).rstrip())
            break
  

rstrip() Функция удаляет пробелы в конце строки. Пробелы включают , n , t , и т.д. r

Комментарии:

1. спасибо, второй вариант отлично работает, я впервые столкнулся с функцией rstrip() , можете ли вы объяснить, что она делает в этом контексте? И как я могу избавиться от пробела в выходных данных? Спасибо.

2. почему я не могу установить переменную для функции печати? Когда я это делаю и пытаюсь распечатать, это не дает мне ничего