def main():
bonus()
def bonus():
#Dollars from sales are input, then time worked,
#then the salary and possible bonus is added
#to the calculated commission based on the earned commission rate
monthlySales=int(input('How much money did your employee make in sales?',))
if monthlySales<10000:
commRate=0
elif monthlySales>=10000 and monthlySales<100000:
commRate=0.02
elif monthlySales>=100001 and monthlySales<500000:
commRate=0.15 and monthlyBonus=1000
elif monthlySales>=500001 and monthlySales<1000000:
commRate=0.28 and monthlyBonus=5000
elif monthlySales>1000000:
commRate=0.35 and monthlyBonus=100000
yearsWorked=int(input('How many years has your employee worked here? Round down to the nearest year.',))
if yearsWorked>=5 and monthlySales>=100000:
extraBonus+1000
elif yearsWorked<1:
monthsWorked=int(input('How many full months has your employee worked here?',))
if monthsWorked<3:
print('Your employee has not worked here long enough to qualify for a bonus.')
main()
我要做的是制定一个程序,其中预定的佣金率是根据员工的销售额输入计划的。
我在
上收到“无法分配给运营商”错误commRate=0.35 and monthlyBonus=100000
,它告诉我,我将在if
嵌套中直接赋值的其余变量上得到相同的错误。
我做错了什么,在这里?
答案 0 :(得分:0)
elif monthlySales>=100001 and monthlySales<500000:
commRate=0.35 ; monthlyBonus=100000
或
elif monthlySales>=100001 and monthlySales<500000:
commRate=0.35
monthlyBonus=100000
答案 1 :(得分:0)
在为变量赋值时,不需要使用and
运算符。但您可以使用检查elif
语句是否符合条件(所有条件)。请尝试以下操作:
elif monthlySales>=100001 and monthlySales<500000:
commRate=0.15
monthlyBonus=1000
elif monthlySales>=500001 and monthlySales<1000000:
commRate=0.28
monthlyBonus=5000
elif monthlySales>1000000:
commRate=0.35
monthlyBonus=100000
答案 2 :(得分:0)
在Python中,与C语言不同,在表达式中不能进行赋值,因此这就是错误的原因。这是为了防止在进行比较时意外分配。请在第5.7节的最后一段中阅读:
答案 3 :(得分:0)
我猜(希望:)不是bonus()
函数的完整列表,因为它实际上并没有返回或打印它计算的任何数据。但是我已经注意到你需要处理的那个函数中的一些东西。
行extraBonus+1000
对未定义的变量(extraBonus)执行计算,然后它不会将结果存储在任何位置。
if...elif
部分中的前两个条件不会为monthlyBonus
设置值;在函数中稍后使用monthlyBonus
之前,您需要先修复它。
此外,if...elif
部分执行冗余测试,因此可以简化:
monthlyBonus = 0
if monthlySales < 10000:
commRate = 0
elif monthlySales < 100000:
commRate = 0.02
elif monthlySales < 500000:
commRate = 0.15; monthlyBonus = 1000
elif monthlySales < 1000000:
commRate = 0.28; monthlyBonus = 5000
else:
commRate = 0.35; monthlyBonus = 100000
除非之前的测试失败,否则我们无法访问elif monthlySales < 100000
,因此我们知道monthlySales>=10000
为真,再次测试是多余的。等