2017-11-04 178 views
1

我有一些問題,同時調試一個程序,我正在設計採取整數用戶輸入的速度限制和車輛的速度,在我的violationCalculator計算之前,用戶多少正在超速。Python速度違規計算器返回TypeError錯誤

我得到一個TypeError: unsupported operand type(s) for -: 'NoneType' and 'int',這是引用speedExcess = driverSpeed - designatedLimit,與violationCalculator 舉行。

我有查明我已經錯了,希望得到一些指導的問題 -

def speedLimit(): 
    designatedLimit = int(input("Please enter the designated speed limit: ")) 
    while designatedLimit not in range(20, 70): 
     print("Invalid entry: please enter a valid speed limit (20-70)") 
     designatedLimit = int(input("Please enter the designated speed limit: ")) 
    return designatedLimit 

def vehicleSpeed(designatedLimit): 
    driverSpeed = int(input("Please enter the vehicle's speed: ")) 
    while driverSpeed <= designatedLimit: 
     print("You were not speeding!") 
     driverSpeed = int(input("Please enter a valid vehicle speed: ")) 
     return driverSpeed 

def violationCalculator(designatedLimit, driverSpeed): 
    speedExcess = driverSpeed - designatedLimit 
    return speedExcess 

def main(): 
    welcomeSplash() 
    designatedLimit = speedLimit() 
    driverSpeed = vehicleSpeed(designatedLimit) 
    speedExcess = violationCalculator(designatedLimit, driverSpeed) 
    print("If you were travelling at", driverSpeed, "in a", designatedLimit, 
    "zone, then you were over the designated speed limit by", speedExcess) 
main() 
+0

提示:試想,如果第一個'driverSpeed <= designatedLimit'測試失敗是什麼'vehicleSpeed'返回。 –

+0

謝謝@ PM2Ring - 我不知道我是如何錯過這個的,特別是對於'speedLimit'完全相同的意圖。 – William

+0

Sandeep已經把遊戲帶走了。 ;)現在看看你是否可以重寫'vehicleSpeed',以便它不重複'driverSpeed = int(input(「請輸入車速:」))' –

回答

1

這只是壓痕問題。你是不是因爲回報有時返回任何東西在裏面,而

def vehicleSpeed(designatedLimit): 
    driverSpeed = int(input("Please enter the vehicle's speed: ")) 
    while driverSpeed <= designatedLimit: 
     print("You were not speeding!") 
     driverSpeed = int(input("Please enter a valid vehicle speed: ")) 
    return driverSpeed 

檢查現在

+0

謝謝Sandeep! – William

+0

我很高興它有幫助。請更新後根據https://stackoverflow.com/help/someone-answers –

+0

會做 - 我只是等待時間過去,所以我可以標記爲回答:) – William