[英]Python wrong multiplication results
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 請幫助:(
問題是,當您將hours
和rate
與整數40
進行比較時,它們總是會更大,因此即使您輸入hours
作為10
,您最終也會進入if
塊,並且它正在嘗試計算工資,就好像小時數大於 40。字符串總是大於 int 的示例 -
>>> '10' > 123123123
True
相反轉換號碼的float
比較之后,你應該將它們轉換為你把輸入直接浮動。 例子 -
hours = float(raw_input('Number of hours'))
rate = float(raw_input('Rate per hour'))
在此之后,您無需在if
塊中將hours
/ rate
轉換為float
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.