Python,搜索列表列表并给出下一个值

Python,搜索列表列表并给出下一个值,python,list,element,Python,List,Element,我正在创建一个程序,给定佣金百分比和发票,它将查找给定的发票,查找该发票的值,并根据输入的百分比计算佣金。当我们输入“calculate”时,它会将所有佣金相加,并给出佣金总额 我无法识别列表中的输入。一旦我这样做了,我必须做什么才能得到发票的价值 数据库=[发票、发票金额、发票保证金] 这就是我目前所拥有的 data_base = [["f1",2000,.24],["f2",150000,.32],["f3",345000,.32]] comission_percentage = int(i

我正在创建一个程序,给定佣金百分比和发票,它将查找给定的发票,查找该发票的值,并根据输入的百分比计算佣金。当我们输入
“calculate”
时,它会将所有佣金相加,并给出佣金总额

我无法识别列表中的输入。一旦我这样做了,我必须做什么才能得到发票的价值

数据库=[发票、发票金额、发票保证金]

这就是我目前所拥有的

data_base = [["f1",2000,.24],["f2",150000,.32],["f3",345000,.32]]
comission_percentage = int(input("Comision Percentage: "))
invoice = input("Enter an invoice: ")
total_comision = 0


while invoice != "calculate" :
    while invoice in data_base:
        invoice_ = data_base.index(invoice)+1 #Gives me the position of invoice
        invoice_amount = data_base[p_factura] #Give me the value os the invoice
        comission = ((margen_comisionar/100)* monto_factura) #calculatecomission
        total_comision = comission + total_comission         
        invoice = input("Enter an invoice: ")
print("The amount to comission is: " + str(total_comission))

您最好将从计算中找到正确发票的任务分开

目前,您的代码根本不会运行,因为您使用的变量的值尚未定义。因为您根本不需要更改发票,所以只需返回所需的值即可。下面是一个示例,如果找不到您要的发票,它将返回一张“空”发票:

def find_invoice(s):
    for i_num, amount, rate in data_base:
        if i_num == s:
            return i_num, amount, rate
    return(None, 0.0, 0,0)
然后,逻辑的主要部分可以是:

total_commission = 0.0
while invoice != "calculate":
    i, amt, rate = find_invoice(invoice)
    if i:
        total_commission += amt*comission_percentage/100.0
        invoice = input("Enter an invoice: ")

另外,要注意变量名。你的拼写必须准确!不过,对于一个显然是初学者的人来说,这不是一件坏事。

你最好将从计算中找到正确发票的任务分开

目前,您的代码根本不会运行,因为您使用的变量的值尚未定义。因为您根本不需要更改发票,所以只需返回所需的值即可。下面是一个示例,如果找不到您要的发票,它将返回一张“空”发票:

def find_invoice(s):
    for i_num, amount, rate in data_base:
        if i_num == s:
            return i_num, amount, rate
    return(None, 0.0, 0,0)
然后,逻辑的主要部分可以是:

total_commission = 0.0
while invoice != "calculate":
    i, amt, rate = find_invoice(invoice)
    if i:
        total_commission += amt*comission_percentage/100.0
        invoice = input("Enter an invoice: ")

另外,要注意变量名。你的拼写必须准确!不过,对于一个显然是初学者的人来说,这并非坏事。

你的“数据库”似乎是一个列表列表。我假设来自用户的输入应该与列表的第一部分匹配

因此:

data_base = [["f1",2000,.24],["f2",150000,.32],["f3",345000,.32]]
如果用户输入
f1
,您希望它与
[“f1”,2000,.24]
匹配

在这种情况下,您的内部
while
循环将不起作用,因为
“f1”
不在
[[“f1”,2000.24],“f2”,150000.32],“f3”,345000.32]

您需要检查列表中每个元素的第一个元素是否与您的输入匹配

for invoice_info in database:
    if invoice in invoice_info:
       # found it!
       <do your invoice commission calculations here>
那你就可以了

if invoice in data_base:
    found_invoice = data_base[invoice]
    total_commission += found_invoice['invoice_amount'] * commission_percentage / 100

您的“数据库”似乎是一个列表列表。我假设来自用户的输入应该与列表的第一部分匹配

因此:

data_base = [["f1",2000,.24],["f2",150000,.32],["f3",345000,.32]]
如果用户输入
f1
,您希望它与
[“f1”,2000,.24]
匹配

在这种情况下,您的内部
while
循环将不起作用,因为
“f1”
不在
[[“f1”,2000.24],“f2”,150000.32],“f3”,345000.32]

您需要检查列表中每个元素的第一个元素是否与您的输入匹配

for invoice_info in database:
    if invoice in invoice_info:
       # found it!
       <do your invoice commission calculations here>
那你就可以了

if invoice in data_base:
    found_invoice = data_base[invoice]
    total_commission += found_invoice['invoice_amount'] * commission_percentage / 100

你应该试试这个代码。检查名称和缩进

        total = 0
        invoice  = "calculate"
        while invoice!='calculate'
            for item in data_base:
                  total = total + item[1]*comission_percentage/100
                  invoice = input("Enter invoice: ")

你应该试试这个代码。检查名称和缩进

        total = 0
        invoice  = "calculate"
        while invoice!='calculate'
            for item in data_base:
                  total = total + item[1]*comission_percentage/100
                  invoice = input("Enter invoice: ")

你面临什么问题?正在从列表中获取数据?您应该尝试此代码。检查名称和缩进总数=0 invoice=“calculate”while invoice!='为数据库中的项目计算:总计=总计+项目[1]*佣金百分比/100发票=输入(“输入发票:”)您面临什么问题?正在从列表中获取数据?您应该尝试此代码。检查名称和缩进总数=0 invoice=“calculate”while invoice!='为数据库中的项目计算:总计=总计+项目[1]*佣金百分比/100发票=输入(“输入发票:”)确定。该程序的目的是能够从数据库导入。如果我那样做的话。这些信息在python中是什么样子的?我真的说不出会是什么样子。python中有很多与数据库接口的方法,其中许多方法的操作方式不同。该程序的目的是能够从数据库导入。如果我那样做的话。这些信息在python中是什么样子的?我真的说不出会是什么样子。python中有很多与数据库接口的方法,其中许多方法的操作方式不同。我明白了。如果搜索不在数据库中的值,则会出现错误。如果没有包含,它应该要求我提供另一个输入。如果我在def函数中声明,当不在数据中时,请重新询问,但我不能用calculateOk结束程序。我明白了。如果搜索不在数据库中的值,则会出现错误。如果不包括,它应该要求我提供另一个输入。如果我在def函数中声明,当不在数据中时,请重新询问,但我不能用calculate结束程序