0

Итак, сегодня буквально мой первый день обучения языку программирования, поэтому я очень новичок в Python. Я беру онлайн-курс Python for Informatics в Мичиганском университете, и наше первое настоящее задание - создать простой калькулятор общей оплаты.Попытка установить переменную на основе условного оператора в Python

Это было достаточно просто, поэтому я решил расширить программу, которая могла бы сделать, чтобы рассчитать чистую зарплату и учесть налоги. Проблема, с которой я столкнулась, - это определить, как я могу динамически (если это даже правильное слово) установить значение переменной «taxrate» на основе ряда условных операторов.

Мне еще нужно найти ответ в поиске на сайте Python и Stack Overflow. Я думаю, что мое ограниченное понимание программирования, вероятно, ограничивает мою способность правильно интерпретировать то, что я нашел.

Просто ищет небольшую помощь:

Код:

#This program is intended to calculate the net pay of employees 
#This first section includes a loop for mistakes and finds gross pay 

while True: 

hours = raw_input('How many hours do you work weekly?') 
hours1 = float(hours) 
rate = raw_input('What is your hourly rate of pay?') 
rate1 = float(rate) 
grosspay = hours1 * rate1 
taxstatus = raw_input('Do you pay taxes?') 


#This secdtion is establishing the tax bracket the user falls into 
taxbracket = taxrate 
if grosspay <= 1000: 
    taxrate = 0.90 
if grosspay > range(1000,1500): 
    taxrate = 0.78 
if grosspay >= 1501: 
    taxrate = 0.63 

# This section is intended to calculate pay after taxes 
grosspay = hours1 * rate1 
if taxstatus == 'yes': 
    netpay = grosspay * taxrate 
print'Your weekly pay after taxes is',netpay 
if not taxstatus: 
    print grosspay 

Когда я запускаю это в PyCharm это позволяет мне знать, что «TaxRate» не был определен . Я в конечном счете хочу, чтобы программа установила «taxrate» на основе того, что пользователи «grosspay» есть. Это то, что я пытаюсь сделать возможным? Я предполагаю, что это так, и что я просто не понимаю, как это сделать.

Любая помощь с благодарностью и на случай, если кто-то задается вопросом, что такое цикл. У меня есть контрольная панель проверки пользователей, над которой я работаю после завершения этой части программы.

+0

отступов очень важно в питона – Pynchia

+0

'taxbracket = taxrate' Избавиться от этой линии, так как вы не используете' taxbracket' где-нибудь – NightShadeQueen

+0

Во-первых, строка 'taxbracket = taxrate' где ваша проблема в том, что вы еще не определили 'taxrate'.Но вы никогда не используете 'taxbracket', так что вы можете полностью удалить эту строку. Во-вторых, вам нужно будет изменить диапазон 'if grosspay> (1000,1500):' to 'if grosspay <= 1500:' –

ответ

1

Ваша логика немного подозрительна в if grosspay > range(1000, 1500). Что это значит быть «большим», чем целый ряд чисел? моя догадка заключается в том, что входной сигнал grosspay, по сути, находится в диапазоне [1000, 1500), поэтому он попадает в эту логическую ошибку в вашем коде и не может присвоить ее чему-либо.

Обычный способ проверить, находится ли число в пределах диапазона, использовать оператор in.

if some_num in range(1, 10): 
    print("some_num is 1, 2, 3, 4, 5, 6, 7, 8, or 9") 

Однако вы заметите, что some_numMUST содержаться в диапазоне целых [1, 9] для этого, чтобы вызвать. Если some_num - 7.5, это не удастся. Это невероятно, вероятно, в случае полной оплаты. Каковы шансы на то, что чья-то зарплата выйдет ровно в долларах?

Вместо того, что вы могли бы сделать, это:

if grosspay <= 1000: 
    taxrate = 0.90 
elif 1000 < grosspay <= 1500: 
    taxrate = 0.78 
elif 1500 < grosspay: 
    taxrage = 0.63 

с помощью elif вместо серии if с делает код немного более эффективным, так как if/elif/else по определению одного блока, который является взаимоисключающими. Другими словами:

a = 1 
b = 2 

if a == 1: 
    print("This gets done!") 
if b == 2: 
    print("This gets done!") 

if a == 1: 
    print("This gets done!") 
elif b == 2: 
    print("BUT THIS DOESN'T!") 
else: 
    print("(this doesn't either...)") 
+1

Я честно не знал, как создать серию чисел, которые я хотел бы, чтобы мое сравнение рассматривалось. Учитывая, где я нахожусь в классе, я не был ознакомлен с elif, но это очень полезно. Это работало как Шарм! Большое спасибо! – natecbc