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
するだけです。たとえば、100ではなくhours = 10 * rate = 10と入力すると、-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'))
この後、ブロック内でhours
/rate
をfloat
に変換する必要はありませんif
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加