2016-04-22 9 views
-1

私は自分自身にPythonをコードする方法を教えています。この問題では、0よりも大きいbの文法エラーをx行以下にしていました。それは無効な構文だと言っています。これはなぜですか?シンボルの大/小での基本的なPython構文エラー

私はrange(x)関数を使って数値のリストを得ることができましたが、この方法はもっと速くて簡単なようです。のおかげで助けを

def factorial(x): 
    if x==0: 
     return 1 
    elif x>0: 
     b=int 
     total = 1 
     for 0<b<=x: 
      total*=b 
     return total 
+1

'0

+0

私はここでかなり混乱しています... 0 mgilson

+1

@MarcB - Pythonには '&&'演算子がありません。 '0 'はPythonでは有効な文ではありません(OPがどんなところで起こっているのかはわかりません)。 – mgilson

答えて

3

どちらか、あなたがif、ないforを意味する(溶液がifforを交換することであり、その場合には)、または他のあなたのコードを反復処理することを期待しているかもしれない、すべての整数b与えられた範囲(答えがforはそのようには動作しません;反復処理するために明示的なオブジェクトを構築する必要があります。例えばrangeを使用します)。

実際にbに値を指定していないため、後者の疑いがあります。実際には、あなたが持っているのですが、意図したとおりではありません。bは、の整数型の文字列を表しています。それが意味をなさない場合は無視してください)

私は恐れています。「bは整数です; 0とxの間の可能な値ごとに何かしてください」 - あなたが望んでいたと思います。しかし、たとえばrange(1,x+1)は、1(包括的)からx+1(排他的)までのすべての整数を表すオブジェクトであり、forループを使用してそれぞれに対して何かを行うことができます。

1

forには、繰り返し可能なものを続ける必要があります。正しい構文は次のとおりです。あなたの場合は

for variable in iterable: 

あなたはx1から行くいくつかのiterableを生成する必要があります。 (あなたのpython 2である場合、またはxrange)これを行うには、

あなたのコードは次のようになりますrange(1,x+1)を使用する必要があります。

for b in range(1, x+1): 
    total *= b 

はまた、b = intはあなたが考えるものではありません。これは宣言ではなく、bはタイプintの変数ではありませんが、実際はその型自体です。 Pythonでは、変数を特定の型に保つように制限することはできません(少なくとも簡単な方法では、AFAIKはありません)

関連する問題