我如何将客户名称和客户列表作为接下来编写的名为 search() 的函数的两个参数?

这个想法是函数“search()”应该以客户的名字和客户列表作为参数,并检查客户是否在 customer.txt 中(然后返回 True)或不在(然后返回 False)。


规范是:1)取一个客户的名字和一个客户列表(writeData(),customer.txt生成的列表)作为参数 2)检查name是否在列表中 3)如果是,返回True ; 如果不是,则返回 False。


目前,

1) 每当我在菜单中输入 S 时,它都会告诉我缺少两个必需的位置参数


回溯(最近一次调用最后一次):


    cdman()

  File "test.py", line 55, in cdman

    menu()

  File "test.py", line 24, in menu

    search()

TypeError: search() missing 2 required positional arguments: 'name' and 'filename'

2)如果我在shell中简单地调用“search()”,它会在首先调用“cdman()”之前和之后显示“名称”搜索“未定义”


3)如果我在文件中有名称“ Jacob Walker ”并尝试搜索它,它会突出显示 Walker 并说无效语法


def cdman():


    def menu():


        print('*------------------------*')

        print('| Customer Database Menu |')

        print('*------------------------*\n')


        choice = input('D: Create/Update Customer Data\nR: Display Database\nS: Search for User\nE: End Program\n')

        if choice == 'D':

            writeData()

            menu()

        elif choice == 'S':

            search()

            menu()

        elif choice == 'R':

            readData()

            menu()

        elif choice == 'E':

            print('PROGRAM TERMINATED')


    def writeData():

        while True:

            database = open('customer.txt', 'a')

            name = input('Name: ')

            if name == '-1':

                database.close()

                return False

            else:

                id_num = input('ID: ')

                database.write('Name: ' + name + ' ')

                database.write('ID: ' + id_num + '\n')


    def readData():

        database = open('customer.txt', 'r')

        for line in database:

            print(line)


    def search(name, filename):

        if name in open(filename).read():

            print('True')

        else:

            print('False')


    menu()

cdman()


隔江千里
浏览 141回答 2
2回答

慕姐8265434

首先,您search()在不带参数的代码中调用该函数,但在其定义中您传递了两个参数。因此,在键入 'S' 后,您的程序需要一个search(CustomerName, FileName),而不是search()。elif choice == 'S':   search(CustomerName, FileName)   menu()我猜您的search()函数无法读取文件中的所有可用行。尝试将以下代码用于您的 search() 函数:def search(CustomerName, filename):    with open(filename, "r") as fp:        Customer_Names = [name.rstrip('\n') for name in fp.readlines()]     for AvailableName in Customer_Names:        if AvailableName == CustomerName:            print True        else:            print False 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python