2015-02-28 2 views
-1

Я предполагаю создать программу, которая вычисляет стоимость выполнения задания на краску. Для каждых 125 квадратных футов пространства стены требуется один галлон краски для восьми часов работы. Компания взимает 42,50 долл. США в час за труд. Программа должна попросить пользователя ввести квадратные футы пространства стены для окрашивания и цену за галлон. Программа для отображения следующего:Оценка оценки работы краски

  • количество галлонов краски требуется округляется до целых галлонов
  • Часы труда требуется
  • стоимость краски на основе круглых до целых галлонов
  • трудовые расходы
  • общая стоимость работы краски

Отрицательные числа, ноль, и не нумеровать входы не алло мы б; количество галлонов должно быть округлено всегда; в конце должна появиться подсказка с запросом другой оценки; часы труда должны отображаться на одну десятичную краску; галлоны краски должны отображаться как целое значение, а ничто не отображается справа от десятичной дроби; общая стоимость рабочей силы должна отображаться до двух десятичных знаков, а значение $ должно отображаться в начале общей стоимости заряда.

Это то, что я до сих пор:

print("This program calculates the cost of doing a paint job.") 

do_calculation = True 
while (do_calculation): 

    while (True): 
     try: 
      # Input amount of square feet of wall space 
      square_feet = float(input("How many square feet of wall space do you need painted? ")) 
      if (square_feet <= 0): 
       print ("Zero and negative numbers can not be accepted.") 
       continue 
     except ValueError: 
      print("The value you entered is invalid. Only numericals are valid."); 
     else: 
      break 
    while(True): 
     try: 
      # Input cost per gallon 
      cost_per_gallon = float(input("Cost per gallon of paint? $")) 
      if (cost_per_gallon <= 0): 
       print ('Zero and negative numbers can not be acepted.') 
       continue 
     except ValueError: 
      print("The value you entered is invalid. Only numericals are valid."); 
     else: 
      break 
    while(True): 
     try: 
      # Input number of gallons needed 
      gallons_needed = float(square_feet)/125.0 
     except ValueError: 
      print("The value you entered is invalid. Only numericals are valid."); 
     else: 
      break 


    # Hours of labor expected 
    hours_of_labor = 8 * gallons_needed 

    # Cost of Labor expected 
    labor_costs = 42.5 * hours_of_labor 

    # Paint cost 
    paint_costs = float(cost_per_gallon) * gallons_needed 

    # Number of gallons of paint 
    print("The number of gallons of paint required is %f" % gallons_needed) 

    # How long labor lasts 
    print("The number of gallons of hours of labor required are %f" % hours_of_labor) 

    # Charged for labor 
    print("The labor charges are $%f" % labor_costs) 

    # Total amount of labor 
    print("Total labor is: %f" % (labor_costs + paint_costs)) 

    another_calculation = input("\nDo you want to try another estimate? (y/n): ") 
    if (another_calculation != "y"): 
     do_calculation = False 
+0

Каков ваш вопрос? –

+0

У меня на самом деле есть три - все с округлением: как у вас есть hours_of_labor, отображаемый в одну десятичную точку (например: 26,5 часа), Как вы показываете gallons_of_paint как целое значение без десятичных знаков (например: 6), и как вы показываете общая сумма трудозатрат до двух десятичных знаков (например: 144,69 долларов США) – sithlorddahlia

ответ

1

Я на самом деле есть три - все с округлением: Как у вас есть hours_of_labor отображается в одну десятичную точку (например: 26.5 часов), Как отображать gallons_of_paint как целое значение, без DECIMALS (например: 6), и, как вы показываете общее количество трудовых расходов до двух десятичных точек (например: $ 144,69)

Вы должны добавили это в Вашем вопросе

Форматирование чисел осуществляется путем добавления различных format specifiers к строки, который выводится. Имейте в виду, что $144.69 является строкой и не является допустимым числом.

Вы уже используете некоторые из них в своем коде (%f - спецификатор), вам просто нужно их изменить.

Наконец-то округление - это то, о чем вам придется позаботиться относительно общих часов, в этом случае вам придется округлить (как это делают большинство подрядчиков в реальной жизни) в round function с помощью этого.

gallons_needed = round(float((square_feet)/125.0),1)? Будет ли это сделать ввод пользователем округляется всегда для расчетов

Вы можете попробовать и посмотреть:

>>> round(1.24, 1) 
1.2 
>>> round(1.25, 1) 
1.3 

Так что ответ здесь нет, это не всегда будет окружать. Вы можете прочитать документацию, чтобы узнать больше о том, как сделать ее всегда круглой.

одна незначительная неприятности: с "печатью („Расходы на рабочую силу: $“, (labor_costs)) программа добавляет раздражающее пространство между суммой и $:«Расходы на рабочую силу: $ XXX .XX 'Как мне избавиться от между пробелом?

Его печать пространство, потому что вы передаете в два аргументов функции печати, его просто распечатать один за другим:

>>> print('The costs are $',(i)) 
The costs are $ 144.43 

Если вы передаете его одна строка, это будет напечатайте его правильно. Здесь я передаю в одной строке с аргументом, отформатированный в виде строки (%s):

>>> print('The costs are $%s' % (i)) 
The costs are $144.43 

Примечание здесь () не нужны (они ничего полезного не делают). Вы можете опустить их:

>>> print('The cost are $%s' % i) 
The cost are $144.43 

Вы также можете использовать новую строку форматирования мини-языка, как это:

>>> print('The costs are ${}'.format(i)) 
The costs are $144.43 
+0

Нравится: gallons_needed = round (float ((square_feet) /125.0), 1)? Будет ли это делать пользовательский округленный UP всегда для расчетов? Кроме того, одно незначительное раздражение: с «печатью (« Затраты на оплату труда: $ », (labor_costs))» Программа добавляет раздражающее пространство между суммой и $: «Затраты на оплату труда: $ XXX. XX ' Как мне избавиться от пространства между ними? – sithlorddahlia

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