为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2021-07-30 15:01:03
这个想法是函数“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()
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

首先,您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 


查看完整回答
反对 回复 2021-08-03
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信