绘制工作估算器四舍五入

时间:2015-02-28 11:01:15

标签: python rounding

我想创建一个程序来计算完成绘画工作的成本。对于每125平方英尺的墙面空间,需要1加仑的涂料和8小时的劳动力。该公司每小时收取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

1 个答案:

答案 0 :(得分:1)

  

我实际上有三个 - 所有四舍五入:你怎么样   hours_of_labor显示为一个小数点(例如:26.5小时),怎么做   您将gallons_of_paint显示为没有小数的整数值(例如:   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函数,它只是一个接一个地打印:

>>> 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