2017-12-25 17 views
-2

次のコードが機能しない理由が混乱しています。私の混乱は、返品とプリントにあります。リストをどのように議論にするかわかりません。他のすべては、その部分までうまく動作するようです。Python 2.7の引数としてリスト

def while_mean(l): 
    sum = 0 
    length = float(len(l)) 
    index = 0 
    while index < len(l): 
    sum = l[index] + sum 
    index = index + 1 
    return sum/length 

def for_mean(l): 
    sum = 0 
    length = float(len(l)) 
    for i in l: 
    sum = i + sum 
    mean = sum/length 
    return mean 

def stats(): 
    apd = ([]) 
    nume = input("write a number:") 
    while nume != 'n': 
    apd.append(nume) 
    print apd 
    nume = input("write another number:") 
    return sum(apd) 
    return while_mean([apd]) 

print stats() 
print while_mean([apd]) 

変更DEF統計へ:

def stats(): 
    apd = ([]) 
    nume = raw_input("write a number:") 

    while nume != 'n': 
    apd.append(float(nume)) 
    print apd 
    nume = raw_input("write another number:") 

    return sum(apd) 

print apd = ([]) 
print stats() 
print while_mean(apd) 
+0

具体的には何が助けを必要としますか? "リストとしての議論"を作るのはどうすれば助けが必要ですか? – Carcigenicate

+1

識別子として 'l'を使うのは悪い習慣です。遅くとも遅いデバッグ問題のために自分自身を設定しているように、 '1'のように見えます。また、 '[apd]'は数字のリストではなくリストのリストです。なぜあなたは 'apd'(既にリストです)をリストにラップしていますか? –

+0

私は自分のコードを修正しました。なぜなら、-1の代わりに 'n'を使う必要がある理由は、私の先生がこう言っていたからです。ここで私の特定の問題は、私のwhile_mean()呼び出しの引数に入れようとすると、私のリストapdが変数として見えなくなるということです。私は引数としてリストを使用することが問題であるかどうか分からなかったので、私は '引数としてリスト'と言った。 –

答えて

2

あなたは、二回返すことができないので、唯一のこれら二つの最初の

apd

return sum(apd) 
return while_mean([apd]) 
だけ stats内で定義されて実行されます関数を使用する場合は、関数を実行する前に定義してください。それを返す。あなたがリストであることを apdを意図している場合も

、その後、while_mean([apd])のようにそれを呼び出すことはありませんが、むしろ

while_mean(apd) 

は、そうしないと、リストのリストを作成します。あなたのコードは、あなたが stats関数の内部で apd変数を宣言していたが、関数の外でその変数を宣言することをお勧めし、その後、パラメータとして関数に渡すような方法で

1
def while_mean(l): 
    sum = 0 
    length = float(len(l)) 
    index = 0 
    while index < len(l): 
     sum = l[index] + sum 
     index = index + 1 
    return sum/length 

def for_mean(l): 
    sum = 0 
    length = float(len(l)) 
    for i in l: 
     sum = i + sum 
     mean = sum/length 
    return mean 

def stats(): 
    nume = input("write a number:") 
    while nume != -1: 
     apd.append(nume) 
     print apd 
     nume = input("write another number:") 
    return sum(apd) 
    return while_mean([apd]) 

apd = ([]) 
print stats() 
print while_mean(apd) 

現在のリストは関数の外部で保持されます。
apd変数をwhile_mean関数に渡すこともできます。

もう一つは、whileループの条件の文字とは対照的に、-1(またはあなたが希望任意の他の数)にnumeの値を比較した方がよい、stats()機能です。
整数が入力されたときには、numeintegerに割り当てられているためです。したがって、numeのタイプはintegerで、numeのタイプがintegerであるため、文字を入力することはできず、変数numeに文字を割り当てることはできません。

数字を入力してリストに入れると、-1と入力します。

私はあなたのコードを修正しました。私が行った改訂は上記のとおりです。私はこれが役立つことを願っています

+0

しかし、その特定のapd(関数の後に定義されている)の長さが0なので、私は0で割っているので、うまくいきません –

関連する問題