2016-06-15 3 views
2

Привет, я начинаю python! Вот у меня проблемы с!Расчет сверхурочной работы с использованием python

Вопрос:

Написать программу запрашивать у пользователя в течение нескольких часов и скорости в час, используя raw_input для расчета валовой заработной платы. Оплачивайте почасовую ставку за часы до 40 и в 1,5 раза почасовой ставкой за все отработанные часы свыше 40 часов. Используйте 45 часов и курс 10,50 в час для тестирования программы (плата должна составлять 498,75). Вы должны использовать raw_input, чтобы прочитать строку и float(), чтобы преобразовать строку в число. Не беспокойтесь о проверке ошибок в пользовательском вводе - предположите, что пользователь вводит числа правильно.

Мой ответ был ниже, но не может получить 498.75, и я не уверен, где он поступил неправильно. Пожалуйста, помогите :)

hrs = raw_input('Enter hours ') 
h= float(hrs) #why use float? 
rate = float(10.5) 

if h <= 40: 
    pay = h*rate 
elif h > 40: 
    pay = ((h-40)*rate*1.5)+rate*40 

print "Your pay is %d" %pay 

ответ

1

Когда вы печатаете оплату пользователя, вы используете %d для печати фактической оплаты. Чтобы отобразить числа с плавающей запятой (например, 498.75), вы должны использовать %f (точнее, %.2f, так как вы не можете заплатить кому-то менее 1 цента).

Так что это будет правильный путь, который владеет 498,75:

hrs = raw_input('Enter hours ') 
h= float(hrs) #why use float? 
rate = float(10.5) 

if h <= 40: 
    pay = h*rate 
elif h > 40: 
    pay = ((h-40)*rate*1.5)+rate*40 

print "Your pay is %.2f" %pay 

Вы можете найти подробную информацию относительно строки форматирования here

Кроме того, в отношении h= float(hrs) #why use float?: по умолчанию, raw_input() возвращает строку , вы должны использовать float() для синтаксического анализа этой строки на число с плавающей запятой и позже использовать ее в своих вычислениях.

Надеюсь, это будет полезно.

+0

Большое вам спасибо! – Claire

2

Ваш расчет правильно, вам просто нужно правильно отформатировать вывод. %d для целых чисел так, чтобы изменяющиеся %f, которая используется для поплавков будут делать трюк:

print "Your pay is %f" %pay 

С выше изменениями вы получите следующий вывод:

Your pay is 498.750000 

Вы можете найти полный список различных спецификаторы формата от Python docs.

2

Ваш код правильный, но вы используете %d для печати значения переменной pay, который преобразует его обратно в int и дробной части игнорируется.

Попробуйте использовать %s или %f или %.2f.