2016-05-27 3 views
2

ちょっと、私はちょうどPythonを使い始めています。私は4つの数字の中で最大の数字を返す関数を使って見つけようとしています。どんな理由であれ、関数は値dだけを返し続けます。私がyeildに入れた数字の他のセット。もともとmaxを使って解決しましたが、割り当てにmaxを使用することはできません。何が間違っているのか教えてください!ありがとう!関数を返さない - xを使わずに集合の中で最高の数を見つけようとしています

a=num1=int(input("Enter 1st number ")) 
b=num2=int(input("Enter 2nd number "))   
c=num3=int(input("Enter 3rd number ")) 
d=num4=int(input("Enter 4th number ")) 


def CompareNumbers(a, b , c, d):  
    if(b > a): 
     largest=b 
     return largest 
    if(c > b): 
     largest= c 
     return largest 
    if(d > c): 
     largest= d  
     return largest 

largest = a 

e= CompareNumbers(a, b, c, d) 

print(e) 
+0

また、私は最後に1つのリターンを試しましたが、同じ結果が出ました。 –

+3

それについて考えてみてください。 'CompareNumbers(1、2、10、10)'で関数を呼び出すとします。次に起こるのは 'b> a'が' True'で、 'b''に' '最大' 'を割り当て、' '最大' 'を返します。 – timgeb

+2

そして、最初の2つの 'return'ステートメントを削除してもまだ動作しない理由は、まだバグがあるということです。いくつかの入力が機能していない場合は、その機能を1枚の紙に印刷します。 – timgeb

答えて

2

あなたはまだfor-loopsが発生していないかもしれませんが、必要になります。私の提案がしようとすると、ここで1を使用することです:

def compare_numbers(a, b, c, d): 
    # To start out, we'll assume the 
    # first number is the largest, but 
    # we'll be double checking that. 
    largest = a 

    # We put the rest of the numbers in 
    # a list that we'll iterate over in 
    # the for-loop below 
    my_list = [b, c, d] 

    for number in my_list: 
     # see explanation below... 

    return largest 

を私は上記の書いた空のforループでは、あなたはlargestnumberよりも実際に大きいかどうかを確認するコードのビットを書きたいと思うでしょう。それがあれば、素晴らしい!何もする必要はありません。しかし、numberが大きい方の場合はlargest = numberに設定する必要があります。これを正しく行うと、forループが終了するときに、largestが入力した4つの数字の中で最大の数字になります。

+0

完全なコードを与えずに、OPに思考を促すためにアップしました。 – SuperSaiyan

+0

ありがとうございます。しかし、この任務のために、私たちはまだ学んでいません。 –

関連する問題