2015-06-25 3 views
-1

Итак, у меня есть этот код, который вычисляет за ваши общие деньги при вводе часов и скорости. Кроме того, если вы работаете более 40 часов, вы получаете 1,5 раза в час за каждый потраченный час.Ошибка возврата в этой функции «computepay»

Мой вопрос я определил функцию с этим кодом: и запустить его с помощью computepay() в командной строке просит «Введите часы» «Enter Rate»

Затем он завершает работу без выплевывая значение что я хочу. Я полный noob с программированием, поэтому, пожалуйста, помогите, и терпение оценено. Спасибо.

def computepay(): 
    try: 
     int1 = raw_input("Enter Hours") 
     h = float(int1) 
     int2= raw_input("Enter Rate") 
     r = float(int2) 
    except: 
     print "Error, please enter a numeric input" 
     quit() 
    if h >= 40: 
     pay1 = 40 * r + (h - 40) * r * 1.5 
     pay2 = h * r 
     return pay1 
    else: 
     return pay2 
+0

Как вы это называете? Вы когда-нибудь, например. 'print' значение? – jonrsharpe

ответ

0

Кстати вы делаете вы можете назвать его как функцию и распечатать функции возвращаемого значения

Без print вы не можете получить значение, поэтому используйте печать и pay2 должна рассчитываться в остальном случае

def computepay(): 
    try: 
     int1 = raw_input("Enter Hours") 
     h = float(int1) 
     int2= raw_input("Enter Rate") 
     r = float(int2) 
    except: 
     print "Error, please enter a numeric input" 
     quit() 
    if h >= 40: 
     pay1 = 40 * r + (h - 40) * r * 1.5 

     return pay1 
    else: 
     pay2 = h * r 
     return pay2 
print computepay() 

или

def computepay(): 
    try: 
     int1 = raw_input("Enter Hours") 
     h = float(int1) 
     int2= raw_input("Enter Rate") 
     r = float(int2) 
    except: 
     print "Error, please enter a numeric input" 
     quit() 
    if h >= 40: 
     pay1 = 40 * r + (h - 40) * r * 1.5 

     print pay1 
    else: 
     pay2 = h * r 
     print pay2 
computepay() 
0

Вы не назначая pay2 для else состояния

if h >= 40: 
    pay1 = 40 * r + (h - 40) * r * 1.5 
    return pay1 
else: 
    pay2 = h * r 
    return pay2 
+0

Ничего себе, это похоже на то, что я второй раз размещал на stackoverflow, и я так рад, что есть великие люди, которые мне помогают. Я прочитал все ваши сообщения и многому научился, спасибо вам большое! Я понял свою проблему. Еще раз, спасибо! –

+0

Без проблем :) Рад, что я мог бы помочь ...: D – shaktimaan

0

«Тогда он завершает работу без выплевывая значение, которое я хочу». Да, да, но если вы не увидите его где-то, вы его не увидите. IOW вам потребуется:

def computepay(): 
    # your code here 

pay = computepay() 
print "your pay is", pay 

Теперь есть ошибка в вашем коде:

if h >= 40: 
    pay1 = 40 * r + (h - 40) * r * 1.5 
    pay2 = h * r 
    return pay1 
else: 
    return pay2 

Вы определяете pay2 в первой части if отрасли, но попытаться вернуть его из второй - в которой его не существует. При любом значении h < 40 этот код поднимет NameError. Чего вы хотите:

if h >= 40: 
    pay1 = 40 * r + (h - 40) * r * 1.5 
    return pay1 
else: 
    pay2 = h * r 
    return pay2 

, который может быть упрощена:

if h >= 40: 
    return 40 * r + (h - 40) * r * 1.5 
else: 
    return h * r 

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

def computepay(h, r): 
    if h >= 40: 
     return 40 * r + (h - 40) * r * 1.5 
    else: 
     return h * r 


def main(): 
    try: 
     int1 = raw_input("Enter Hours") 
     h = float(int1) 
     int2= raw_input("Enter Rate") 
     r = float(int2) 

    # only catch the expected errors 
    except (ValueError, TypeError): 
     print "Error, please enter a numeric input" 
     quit() 

    print computepay(h, r) 

if __name__ == "__main__": 
    main() 
0

Это будет работать нормально:

def computepay(): 
try: 
    int1 = raw_input("Enter Hours") 
    h = float(int1) 
    int2= raw_input("Enter Rate") 
    r = float(int2) 
except: 
    print "Error, please enter a numeric input" 
    quit() 

if h <= 40: 
    pay = h * r 
else: 
    pay = 40 * r + (h - 40) * r * 1.5 
return pay 

print computepay() 

Примечание: Не забудьте позвонить computepay() с print чтобы получить возвращаемые результаты функции на устройство вывода, т.е. на консоль.

Рад помочь! Не стесняйтесь принять мой ответ, если вы считаете, что это было полезно для вас.:-)

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