如何使用户输入错误不在python列表中

时间:2019-11-05 03:27:10

标签: python-3.x list function

如果用户输入1-4以外的级别或输入字符串,则我的程序不会崩溃。我尝试在附加列表之前尝试.pop(),然后尝试/ except,但是我仍然得到Index Error list索引超出范围。一定有一种我不了解的方法,也许是关于我如何使用函数并附加到列表的方法。

我已经在我的if / else语句和for循环中尝试了.pop()和.clear()方法,但是仍然出现索引错误。我认为错误实际上意味着它正在调用未使用的索引点,是否意味着我在程序中使用的函数将其强制通过,而我需要更改函数以适应循环中的检查点?

def format_currency(x):
    currency = '${:,.2f}'.format(x)
    return (currency)

def calc_commission(level, sales):
    if level == "1":
        if sales <= 2500:
            sales = sales * 0.045
        elif sales > 2500 and sales < 4500:
            sales = sales * 0.0625
        elif sales > 4500:
            sales = sales * 0.0925
    elif level == "2":
        if sales <= 2500:
            sales = sales * 0.0575
        elif sales > 2500:
            sales = sales * 0.0725
    elif level == "3":
        sales = sales * 0.0775
    elif level == "4":
        sales = sales * 0.0925
    else:
        return 0
    return sales

def calc_base_rate(level):
    if level == "1":
        rate = 13.50
    elif level == "2":
        rate = 15.75
    elif level == "3":
        rate = 18.25
    elif level == "4":
        rate = 20.75
    else:
        return 0
    return rate

def calc_total_wage_pay(hoursWorked, rate):
    if hoursWorked > 40:
        otPay = hoursWorked - 40
        otpRate = otPay * rate * 1.5
        tPay = rate * 40 + otpRate
        return tPay
    else:
        return rate*hoursWorked

salesPeeps = []
wagePay = []
commissions = []
totalCommission = 0
totalWagePay = 0
salesNum = int(input("How many sales persons to process? "))
for num in range(salesNum):
    salesName = input("Enter Salesperson Name: ")
    salesPeeps.append(salesName)
    salesLevel = input("Enter Sales Level: ")
    if salesLevel != "1" and salesLevel != "2" and salesLevel != "3" and salesLevel != "4":
        print("Error, invalid entry.")
    else:
        salesAmount = float(input("Enter Number of Sales: "))
        commission = calc_commission(salesLevel, salesAmount)
        commissions.append(commission)
        hoursWorked = float(input("Enter Hours Worked: "))
        wagePay.append(calc_total_wage_pay(hoursWorked, calc_base_rate(salesLevel)))

for x in range(len(salesPeeps)):
    name = salesPeeps[x]
    wage = wagePay[x]
    comm = commissions[x]
    totalCommission += comm
    totalWagePay += wage
print("Total Commission: " + str(format_currency(totalCommission)))
print("Total Hourly Wages: " + str(format_currency(totalWagePay)))
print("Total Combined Commission & Hourly Wages: " + str(format_currency(totalCommission+totalWagePay)))
for name in salesPeeps:
    print(name)


预期: 有多少销售人员要处理? 1个 输入营业员姓名:bob 输入销售人员级别:bob 错误,输入无效。 输入销售人员级别:1 输入销售数量:500 输入工作时间:10 总佣金:$ 22.50 每小时总工资:135.00美元 佣金和小时工资总额:157.50美元 鲍勃

实际: 有多少销售人员要处理? 1个 输入营业员姓名:bob 输入销售水平:鲍勃 错误,输入无效。 追溯(最近一次通话):   在第70行中输入文件“ C:/Users/guita/Documents/School/CSCI100/funcTest/funcTest.py”     工资= payPay [x] IndexError:列表索引超出范围

以退出代码1完成的过程

0 个答案:

没有答案