Print语句执行两次Python



当用户输入一个输入时,如果该输入不可用,打印将执行两次
如何修复它???

if ask.lower() == 'open':
with open(filename, 'r') as f:
contents = f.read().splitlines()
search_name = input("What is your name? ")
for line in contents:
if line.find(search_name) != -1:
print(line)
else:
print("Unable to find your name")

输出:

找不到您的姓名
找不到你的姓名

这里有一个更健壮的构造:

if ask.lower() == 'open':
with open(filename) as f:
name = input('What is your name? ')
for line in f:
if name in line:
print(line)
break
else:
print('Unable to find your name')

您正在为文件中的每个条目调用print命令!让我澄清一下,对于作为search_name输入的名称,您正在从文件中读取的每一行上循环(在您的情况下,文件似乎有2行(。

如果线索不是你想要的。你需要的是这样的东西:

if ask.lower() == 'open':
with open(filename, 'r') as f:
contents = f.read().splitlines()
search_name = input("What is your name? ")
is_found = false
for line in contents:
if line.find(search_name) != -1:
is_found = true
print(line)
if not is_found:
print("Unable to find your name")

最新更新