operator-keyword - 试图将变量分配给值会导致"Cannot assign to operator" 错误

  显示原文与译文双语对照的内容

 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 嵌套之间直接分配数值的变量上获得相同的错误。

我在这里做了什么?

时间: 作者:


elif monthlySales>=100001 and monthlySales<500000:
 commRate=0.35 ; monthlyBonus=100000

或者


elif monthlySales>=100001 and monthlySales<500000:
 commRate=0.35
 monthlyBonus=100000

作者:

将值赋值给变量时不需要使用 and 运算符。 但是你可以用来检查( 所有条件) 是否已经满足 elif statement.Try的条件:


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 

在 python 中,分配不能出现在C 中的inside 表达式,因这里这就是错误的原因。 当进行比较时,防止意外分配。 请在第 5.7段的最后一段中阅读关于它的内容:

https://docs.python.org/2/tutorial/datastructures.html

我猜( 希望:) 不是 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 是 true 并且再次测试它是多余的。 等等.

作者:
...