2017-07-11 19 views
-1

実際の質問は、値が3で割り切れる場合は入力値の立方体を返すことです。関数が新しい値を返さない理由[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

また、 "Dynamic whitespace" _とはどういう意味ですか?私は前にこの言葉を聞いたことがない。 –

+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)