цикл for не работает внутри оператора if в python - PullRequest
0 голосов
/ 24 мая 2019

Оператор if и цикл for работают отлично, но они не работают, когда цикл находится внутри оператора if, что более подробно описано в разделе кода.

keyword = input("search here: ")

with open("listaUni.txt") as lista_uni:
    if keyword in lista_uni.read():
        print("there is")
    else:
        print("there is not")
#this works fine



with open("listaUni.txt") as lista_uni:
  for uni in lista_uni.readlines():
    if keyword.lower() in uni.lower():
      print(uni)
# also this works fine, it prints out all the strings in the list 
#containing the keyword



keyword = input("search here: ")

with open("listaUni.txt") as lista_uni:
    if keyword in lista_uni.read():
      for uni in lista_uni.readlines():
        if keyword.lower() in uni.lower():
          print(uni)
    else:
          print("there is not")
#this doesn't work

lista_uni.close()

Когда ключевое слово находится в списке, оно должно проверить каждую строку списка и распечатать те, в которых есть ключевое слово, а если ключевое слово отсутствует в списке, должно появиться «нет». Он попросил ключевое слово, а затем ничего не делать. Так как 2 части кода на самом деле работают отдельно, что я делаю не так? спасибо всем.

1 Ответ

3 голосов
/ 24 мая 2019
if keyword in lista_uni.read():
      for uni in lista_uni.readlines():
        if keyword.lower() in uni.lower():
          print(uni)

Здесь вы пытаетесь прочитать файл дважды.

  • Во время read()
  • Во время readlines()

После первого чтения.Вы уже в конце файла, поэтому readlines() возвращает пустой список.

Чтобы обойти это, вы можете добавить seek(0)

if keyword in lista_uni.read():
      list_uni.seek(0)
      for uni in lista_uni.readlines():
        if keyword.lower() in uni.lower():
          print(uni)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...