2017-07-11 44 views
-1

這種做法的問題是返回輸入值的立方體如果值是3整除Elsewise返回false。爲什麼函數不返回新值的Python]

的代碼結構編譯,但它不返回立方體價值。相反,它會返回原始輸入值。

a=raw_input("Enter a number") 
number=int(a) 

def cube(number): 

    number=number**3 
    print" The answer is %s" % number 
    return number 

def by_three(number): 
    if number%3==0: 
     return cube(number) 
    else: 
     return False 

print" The answer is %s" % number 
+7

你永遠不會調用你的任何函數。 – Ryan

+0

請發佈一個可編譯的代碼版本。這是充滿了壓痕頭痛。 –

+0

你好,請您點擊綠色箭頭來接你認爲最有用的回答表示感謝。乾杯 –

回答

1

空白。縮進您的if聲明。

def by_three(number): 
    if number%3==0: 
     return cube(number) 
    else: 
     return False 

(編輯:從瑞安的評論)

要解決運行時錯誤的,你沒有打電話給你定義的功能。這應該做雅:

print "The answer is %s" % by_three(number) 

或者......

a=raw_input("Enter a number") 
number=int(a) 

if number%3==0: 
    number = number**3 
else: 
    number = False 

print "The answer is %s" % number 
+2

如果是這樣的問題,這將是一個語法錯誤,而不是運行時錯誤。 – Ryan

+2

另外,你的意思是什麼_「動態空白」_?我從未聽過這個詞。 –

+0

動態空白:Python使用縮進,而不是大括號,劃定的代碼塊 – ddg

2

你需要調用函數by_three中的代碼。爲什麼你沒有得到你想要的結果是因爲這個函數被聲明瞭,但從來沒有被調用過。下面提供了正確的代碼:

a=raw_input("Enter a number ") 
number=int(a) 

def cube(number): 
    number=number**3 
    #print" The answer is %s" % number 
    return number 

def by_three(number): 
    if number%3==0: 
     return cube(number) 
    else: 
     return False 

# call the function `by_three` and pass number as a parameter 
print" The answer is %s" % by_three(number)