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请帮助:(
答案 0 :(得分:2)
问题是hours
和rate
在将它们与整数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
。