2

ループの概念がまだわかりません。次のコードを取得しました。

x=0
while  x < n:
   x = x+1
   print x

1,2,3,4,5を出力します。

それは問題ありませんが、ループで行われた計算にアクセスするにはどうすればよいでしょうか? たとえば、ループの積 (5*4*3*2*1) を返すにはどうすればよいですか?

ありがとう。

編集:

それが私の最終的なコードでした:

def factorial(n):
   result = 1
   while n >= 1:
      result = result *n
      n=n-1
   return result
4

7 に答える 7

3

total一連のアクションの累積値を含む変数 ( ) をもう 1 つ導入します。

total = 1
x = 1
while x <= 5:
   total *= x
   x += 1
   print x, total
print 'total:', total

実際には、よりpythonicな方法:

total = 1
n = 5
for x in xrange(1, n + 1):
    total *= x
print total

の初期値は であるtotal必要が1あり、ではないことに注意してください。0後者の場合、常に0結果として受け取るためです (0*1*..は常に に等しい0)。

于 2013-07-16T13:03:32.343 に答える
3

その製品を保存し、その結果を返すことにより:

def calculate_product(n):
    product = 1
    for x in range(n):
        product *= x + 1

    return product

これで、計算を生成する関数が作成され、結果が返されます。

print calculate_product(5)
于 2013-07-16T13:02:49.157 に答える
2

または、while ループから値を返す yield キーワードを使用することもできます。例えば:

def yeild_example():
    current_answer = 1
    for i in range(1,n+1):
        current_answer *= i
        yield current_answer

これにより、回答が遅延して評価されます。一度だけすべてが必要な場合は、おそらくこれが良い方法ですが、物を保存したいことがわかっている場合は、おそらく他の回答のように return を使用する必要がありますが、これは他の多くのアプリケーションに適しています。

これはgenerator function、尋ねられたときに答えを「生成する」機能であるという背後にある考え方で、 と呼ばれます。一度にすべてを生成する標準関数とは対照的に、これにより、必要なときにのみ計算を実行でき、一般にメモリ効率が向上しますが、パフォーマンスはケースバイケースで評価するのが最適です。いつものように。

**編集:これはOPが尋ねている質問ではありませんが、Pythonに関する本当にきちんとした柔軟なもののいくつかへの良い紹介になると思います.

于 2013-07-16T13:09:48.247 に答える
2

for ループを使用します。

sum_ = 1
for i in range(1, 6):
    sum_ *= i
print sum_
于 2013-07-16T13:06:04.523 に答える
1

while ループ構造を保持したい場合は、次のようにすることができます (それを行うには 1000 +1 の方法があります ...):

x=1
result = 1
while  x <= n:
   x += 1
   result *= x

result階乗を格納する場所。その後、 justreturnまたはprintout result、またはそれでやりたいことは何でもできます。

于 2013-07-16T15:46:24.667 に答える