我已經在另一個網站上發布了這個,但還沒有收到答案......所以在這里發布以獲得有助于我了解正在發生的事情的答案。我的原帖如下:
因此,我為此撰寫了自己的代碼,然后回傳并查看了講師完成此練習的視頻。
我的代碼:
(01) hours = input('How many hours did you work?')
(02) rate = input('How much do you make per hour?')
(03) if float(hours) <= 40:
(04) strhrs = hours # strhrs = straight-time hours
(05) else:
(06) reghrs = 40
(07) othrs = float(hours)-40 # othrs = over-time hours
(08) strhrs = 0
(09) if strhrs != 0:
(10) pay = float(strhrs)*float(rate)
(11) else:
(12) regpay = float(reghrs)*float(rate)
(13) otpay = (float(rate)*1.5)*float(othrs)
(14) pay = regpay otpay
(15) print(pay)
然后,我回去觀看了有關此練習的視頻。顯然我們的代碼會有所不同。下面是老師的代碼:
導師代碼:
(01) sh = input("Enter Hours: ")
(02) sr = input("Enter Rate: ")
(03) fh = float(sh)
(04) fr = float(sr)
(05)
(06) if fh > 40 :
(07) reg = fr * fh
(08) otp = (fh-40.0)*(fr*0.5)
(09) xp = reg otp
(10) else:
(11) xp = hours * rate
(12)
(13) print("Pay:",xp)
我的問題是,使用“otpay”(我的代碼的第 13 行)計算費率1.5,我得到的結果與計算 fr 0.5 的“otp”(講師代碼中的第 8 行)相同。
Python 處理兩段代碼的方式有什么不同(rate * 1.5 VS float rate * 0.5)?
如果我在講師代碼中輸入“1.5”,結果完全不同(它計算為正常工資率的 2.5 倍,而不是正常工資率的 1.5 倍)。我沒有看到會導致這種情況發生的語法差異。
uj5u.com熱心網友回復:
首先,對您的代碼進行評論:正常作業時間和正常作業時間有什么區別?空無一人。您可以通過不進行區分來簡化您的代碼。此外,所有這些浮動演員都是不必要的 AFAICT。
像這樣(未經測驗)
hours = input('How many hours did you work?')
rate = input('How much do you make per hour?')
if hours <= 40:
reghrs = hours # reghrs = regular hours
othrs = 0 # othrs = over-time hours
else:
reghrs = 40
othrs = hours-40
regpay = reghrs*rate
otpay = (rate*1.5)*othrs
pay = regpay otpay
print(pay)
回答您的問題:您只是使用不同的方式來獲得相同的結果。您正在計算payment for the first 40 hours (regpay) payment for the overtime time (otpay)。您的講師正在計算regular payment for the time worked (reg) additional payment for overtime (otp)。
順便說一句:請告訴您的講師使用更好的變數名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441206.html
標籤:Python python-3.x
