1

基本的な python を学習しようとしていますが、while ループを使用して値を返すことができないようです。読んでいるガイドから構文をコピーしていますが、実行してもうまくいかないようです。私は別のバージョンを持っているかもしれませんが、よくわかりません。

とにかく、私はちょうどいじって、このコードを手に入れました

def fact(x):
 count = 1
 sum = 0
 while count <= x:
     sum =  count * sum
     count + 1
 else:
     return sum   

これが階乗を正しく計算するかどうかさえわかりません。気にしません。値を返そうとしているだけです。なにが問題ですか?return を使用できないのはなぜですか? return を次のように置き換えると、何が問題なのかわかりません

       display,

それはまだ機能しません。

4

4 に答える 4

3

あなたのwhileループでは、実際にcount等しいと設定していません-変数を再割り当てしないcount + 1と述べているだけです:count + 1

In [1]: count = 1

In [2]: count + 1
Out[2]: 2

In [3]: count
Out[3]: 1

のようなものを使用したいと思うでしょうcount += 1。また、次のような問題が発生します。

sum =  count * sum

最初は 0 なので、カウントに関係なく毎回 0 にリセットします。それでも問題が解決しない場合は、1 に設定してみてください。elsewith ステートメントが使用されていますが、ここwhileではおそらく、while条件が満たされた後にブロックを終了して、そのように変数を返すことができます。

于 2012-12-04T23:39:29.413 に答える
1

試す:

def fact(x):
    count = 1
    sum = 1
    while count <= x:
        sum *= count
        count += 1
    return sum

これはおそらくより良いですが:

def fact(x):
    prod = 1
    for i in range(1, x+1):
        prod *= i
    return prod

カウント変数を で開始する000 * n == 0for all n.

ここelseでも はまったく役に立ちません。

于 2012-12-04T23:38:35.030 に答える
1
def fact(x):
    count = 1
    sumi = 1
    while count <= x:
        sumi =  count * sumi
        count = count + 1

    return sumi

ここにいくつかの間違いがあります:

  • 先頭の sumi = 0 は間違っています。関数が常に 0 を返すようになります。
  • count + 1 は、何にも代入しなければ count の値を変更しません
  • returnしばらくしてからあなたの声明を出してください。ループが完了すると、sumi の値が返されます。
于 2012-12-04T23:44:06.250 に答える
0

したがって、Pythonの構造を操作するために何に従っているのかわかりませんが、elseを単独で呼び出すことはできません。else ステートメントをテストするための判断値がないため、戻ることはありません。動作させるには、if ステートメントにアタッチする必要があります。

たとえば、次のようなことをしたいでしょう:

if x == 1:
   return blah
else:
   return foo

確かなことはわかりませんが、そのコードはまったく実行されない可能性さえあります。どちらのディスプレイかはわかりませんが、あなたが望むものではないことは確かです。

これを読んでください: http://docs.python.org/2/tutorial/controlflow.html

これは、制御構造について学ぶのに役立ち、ループを思いどおりに実行できるようになります。

于 2012-12-04T23:40:06.783 に答える