我创建一个给出佣金百分比并给出发票的程序,它会查找给定的发票,查找该发票的价值并根据百分比输入计算佣金。当我们输入"calculate"
时,它将汇总所有佣金并给我佣金总额。
我在尝试识别列表中的输入时遇到问题。一旦我这样做,我该怎样做才能获得该发票的价值?
data base = [Invoice, Invoice amount, invoice margin]
这是我到目前为止所拥有的。
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))
答案 0 :(得分:0)
您最好分开从计算中找到正确发票的任务。
目前您的代码根本不会运行,因为您使用的是您尚未定义其值的变量。由于您根本不需要更改发票,只需返回您想要的值即可。这是一个例子,它返回一个"空"如果发票没有找到您要求的发票,则开具发票:
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: ")
另外,请注意变量名称。你的拼写必须是完全的!不过,对于一个明显的初学者来说,这并不是一件坏事。
答案 1 :(得分:0)
您的“数据库”似乎是列表清单。我假设用户的输入应该与列表的第一部分匹配。
所以给出:
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>
更好的方法是将数据库转换为字典:
data_base = {'f1': {'invoice_amount': 2000, 'invoice_margin': .24},
'f2': {'invoice_amount': 15000, 'invoice_margin': .32},
'f3': {'invoice_amount': 345000, 'invoice_margin': .32}
}
然后你可以做
if invoice in data_base:
found_invoice = data_base[invoice]
total_commission += found_invoice['invoice_amount'] * commission_percentage / 100
答案 2 :(得分:0)
你应该试试这段代码。检查名称和缩进
total = 0
invoice = "calculate"
while invoice!='calculate'
for item in data_base:
total = total + item[1]*comission_percentage/100
invoice = input("Enter invoice: ")