0

私はこのオンラインの Python コースを受講していますが、このコースの共通のテーマは、ソリューションを解決するために関数やライブラリを使用しないことです。問題は尋ねます:

リスト L の要素の積を返す関数 prod(L) を定義します。

私の試みは以下です。この特定の問題は for in range を使用するよう求めています。次の質問では for in を使用しています。 for in の使用方法は理解していますが、for in range は理解していません。積を計算するために 0,1,2,3 の範囲 i をどのように使用しますか?

範囲ループで壊れています:

def prod(L):
   Llen = len(L)
   for i in range (0,Llen):
      print(L[-1]*L[-2]*L[-3]*L[-4])

prod([1,2,3,4])

私の for in ループは正常に動作します。

def prod(L):
   p = 1
   for i in L:
      p *= i
   return p

prod([1,2,3,4])

ラムダまたは「from operator import mul」は使用しないでください! 私はそれらの方法を理解しています。

4

4 に答える 4

0

ライブラリの使用mathは許可されていますか? それは簡単です(それを行うnumpyのは一種の不正行為です):

>>> from math import *
>>> def prod(L):
        if 0 in L:
            return 0.
        #elif len(L)==0:
        #    return 0.
        elif sum([item<0 for item in L])%2==0
            return exp(sum(map(log, L)))
        else:
            return -exp(sum(map(log, map(abs, L))))
于 2013-09-12T19:51:59.543 に答える
0

を使用してそれを解決する別の方法(最大再帰深度まで)range

def prod (x):
    range (42)
    def prod_ (head, *tail):
        return head if not tail else head * prod_ (*tail)
    return 1 if not x else prod_ (*x)

print (prod ( [1, 2, 5, 19] ) )
于 2013-09-12T19:28:02.193 に答える