使用python

时间:2016-06-15 06:39:27

标签: python

嗨,我是蟒蛇初学者! 这是我遇到问题的问题!

问题:

编写一个程序,使用raw_input计算总薪酬,提示用户每小时和每小时的费率。对于工作时间超过40小时的小时工资小时工资,按小时工资计算为小时工资的40倍和1.5倍。使用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

3 个答案:

答案 0 :(得分:2)

您的计算是正确的,您只需要正确格式化输出。 %d用于整数,因此更改为用于浮动的%f将起到作用:

print "Your pay is %f" %pay

通过以上更改,您将获得以下输出:

Your pay is 498.750000

您可以在Python docs找到不同格式说明符的完整列表。

答案 1 :(得分:2)

您的代码是正确的,但您使用%d来打印变量pay的值,该值会将其转换回int并忽略小数部分。

请尝试使用%s%f%.2f

答案 2 :(得分: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()将此字符串解析为浮点数,并在以后的计算中使用它。

希望它会有所帮助。