Ваша проблема в том, что вы пытаетесь вызвать вашу функцию search
без передачи аргументов, которые, как вы сказали, ей нужны (name
и filename
)
Этот вопрос о переполнении стека содержит подробное объяснение параметров функции python , и было бы полезно прочитать, а также эту статью . Чтобы устранить ошибку, с которой вы сталкиваетесь, есть 2 основных решения.
Первое решение (которое более полезно в зависимости от того, что делает ваш код) - фактически передать параметры. Где у вас есть
elif choice == 'S':
search()
menu()
Вы должны сказать, что искать, т.е.
elif choice == 'S':
search('Bob', 'customer.txt')
menu()
Вы также можете указать значения параметров по умолчанию, так, как они записаны сейчас
def search(name, filename):
Ожидается получение этих значений, иначе они не будут определены (ошибка, с которой вы работаете)
Вы можете указать ему значение по умолчанию для обработки и обработки случаев, когда ничего не передается, например:
def search(name=None, filename='customer.txt'):
if name is None:
print('No name provided!')
elif name in open(filename).read():
print('True')
else:
print('False')