2017-11-03 24 views
0

我想完成類的任務,但我只是沒有得到這最後一塊。builtins.TypeError:'函數'和'int'的實例之間不支持'<='

我想要一個函數,當給定風速時,給出相關的警告信息,但訣竅是風速和警告信息和參數在2個先前定義的函數中。另外,教師希望我們在一行中調用這兩個函數。

首先,我創建的第一個2個功能:

def storm_category(speed): 
    if speed <= 129: 
     return (0) 
    if speed >= 130 and speed < 164: 
     return (1) 
    if 165 <= speed and speed < 189: 
     return (2) 
    if 190 <= speed and speed < 219: 
     return (3) 
    if 220 <= speed and speed < 259: 
     return (4) 
    if speed >= 260: 
     return (5) 

def category_warning(category): 
    if category == 0: 
     return "Not a major threat" 
    if category == 1: 
     return "Very dangerous winds will produce some damage." 
    if category == 2: 
     return "Extremely dangerous winds will cause extensive damage." 
    if category == 3: 
     return "Devastating damage will occur." 
    if category == 4: 
     return "Catastropic damage will occur" 
    if category == 5: 
     return "Cataclysmic damage will occur." 

但在過去的功能,我需要使用從兩個信息:

def warning(speed): 
    # Requirement: this function should be one line! 

    return storm_category(category_warning) 

與上面的代碼雖然,每次我嘗試返回一個錯誤,說「builtins.TypeError:'< =''function'和'int'的實例之間不支持'。它說,錯誤是在這些線路上:

return storm_category(category_warning) 

而且

if speed <= 129: 
     return (0) 

我不知道如果我的語法錯誤或什麼。誰能幫我?

+0

'storm_category(category_warning)' - 究竟發生了什麼? 'storm_category'應該是一個速度,而不是'category_warning'函數,'category_warning'應該是一個類別,比如你對'storm_category'的恰當調用所得到的結果。 – user2357112

+0

貌似返回的'warning'應該是'return category_warning(storm_category(speed))' –

回答

1

錯誤是因爲您發送函數的名稱而不是函數調用。必須是:

def warning(speed): 
    return category_warning(storm_category(speed)) 

note: in your code when the python interpreter process the operation speed <= 129 , the python interpreter assumes speed is a callable function.

相關問題