2014-10-27 4 views
0
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 гнездование.

Что я делаю не так, здесь?

+1

sepearate в две строки, отбрасывающие 'и'или использовать точку с запятой'; ' – nu11p01n73R

+0

Использовать назначение tuple' a, b = 1, 2' приводит к 'a == 1' и' b == 2' – IanAuld

ответ

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

или

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

Спасибо очень для быстрого ответа, отбрасывания и работы отлично. Мне нужно больше узнать о операторах. – user3517512

+0

@ user3517512 добро пожаловать :) – nu11p01n73R

0

Вам не нужно использовать 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 
0

В Python назначения не может происходить внутри выражений, в отличие от C, так что это причина для ошибка. Это необходимо для предотвращения случайных заданий при планировании сравнения. Пожалуйста, читайте об этом здесь, в последнем абзаце сек 5.7:

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

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 верно и снова испытывать его является избыточным. И т. Д.

Смежные вопросы