2017-02-15 5 views
0

Я кодирую Python, и у меня есть эта проблема, которую я искал на этом веб-сайте, и другие, и я до сих пор не могу найти фактический ответ для этой проблемы я столкнулся. Лучший способ спросить это, показывая код первого:проверка наличия слова в файле и вывод всей строки, если она есть в python

def showFile(): 
with open("Password.txt","r") as file: 
    userShowType = input("What password do you want to show? \n") 
    for line in file: 
     if userShowType in line: 
      print (line) 

То, что я хочу, чтобы программа, чтобы сделать это для пользователя, чтобы ввести тип пароля (например, Outlook, Gmail, Youtube и т.д.) и компьютер искать его. Если компьютер найдет слово, он распечатает всю строку, содержащую как пароль, так и пароль. Если этого не произойдет, компьютер распечатает строку, сообщающую пользователю, что тип пароля не существует или что компаньон не смог его найти.

Однако вышеуказанный код не выполняет последний из операторов if, только первый и распечатывает, если компьютер нашел пароль. Есть ли способ, которым я могу сделать то и другое?

+0

у вас отсутствует 'else: print (« тип пароля не существует или что компьютер не смог его найти »)' – crowchirp

+0

@crai Я попробовал это до публикации этот вопрос, но оператор if находится в цикле for, поэтому выполнение инструкции else будет печатать каждую строку файла – Rizing

ответ

0

Поскольку ответ по умолчанию является сообщение о том, пароль не был найден, путем предварительного высева такого сообщения & только обновляя его, если критерии испытаний удовлетворяется даст желаемый результат

def showFile(): 
    with open("Password.txt","r") as file: 
    userShowType = input("What password do you want to show? \n") 
    msg = 'passwd not present in file' 
    for line in file: 
     if userShowType in line: 
      msg = line 
      break 
    print(msg) 

для цикла над линиями будет обновляться только сообщение msg, если запрошенный пароль найден (и в равной степени выходит из цикла). В окончательной печати отобразится сообщение

+0

. Пожалуйста, объясните, как ваш код разрешает проблему. –

+0

@ RosárioPereiraFernandes msg будет равен только строке в файле (то есть в настоящее время анализируется), если пароль найден. Если пароль не найден, он распечатает оригинал сообщения, потому что он не будет изменен в цикле for – Rizing