Python错误的乘法结果

时间:2015-09-18 03:50:22

标签: python

def Calc_Salary(x,y):
    Pay = x*y
    return Pay
def Calc_with_bonus(c,d):
    bonus = c+d
    return bonus
hours = raw_input('Number of hours')
rate = raw_input('Rate per hour')
if hours >= 40:
    extras = ((float(hours)-40)*float(rate)*1.5)
    regular = float(rate)*40
    print Calc_with_bonus(extras,regular)
elif hours < 40:
    print Calc_Salary(hours,rate)
raw_input()

请帮助,我已多次查看该程序,一切似乎都是正确的。当小时数超过40小时时,它将计算超过40小时的奖励和小时达到40小时的常规费用,添加它们并给出正确的结果。但是,如果小时数小于40,则只需调用Calc_Salary并将其hours*rate乘以它,但例如,如果输入hours = 10 * rate = 10而不是100,则计算 - 50请帮助:(

1 个答案:

答案 0 :(得分:2)

问题是hoursrate在将它们与整数40进行比较时是字符串,它们总是会更大,所以即使您输入hours作为{ {1}},你最终进入10区块,它正在尝试计算工资,就像小时数大于40一样。字符串的例子总是大于int -

if

在比较之后,不应将数字转换为>>> '10' > 123123123 True ,而应在输入时将它们直接转换为浮点数。示例 -

float

在此之后,您无需将hours = float(raw_input('Number of hours')) rate = float(raw_input('Rate per hour')) / hours转换为rate块中的float