2017-09-18 1 views
-1

私はプログラミングと初心者だと私はこのコードのトラブルによ:トラブル(パイソン)

def supercalcx(a, b): 
    n = a 
    while a <= b: 
     n = n * a 
     a = a + 1 
    print(n) 

IDEは私にエラーを与える:「TypeError例外を:非でシーケンスを乗算することはできません私は、入力がintまたはfloatであると確信しています、誰も私に問題を説明することができます。ありがとう!

+0

あなたが 'supercalcx()'関数を呼び出したときにどのような引数を渡しましたか?変数を渡した場合にわからない場合は、より多くのコードを含めてください。 – Jerrybibo

答えて

0

この機能は動作します:

>>> def supercalcx(a, b): 
...  n = a 
...  while a <= b: 
...   n = n * a 
...   a = a + 1 
...  print(n) 
... 
>>> supercalcx(2, 4) 
48 
0

あなたの関数は、データ型間の変換はありません。

def supercalcx(a,b): 
    n = int(a) 
    a = int(a) 
    b = int(b) 
    while a <= b: 
     n = n * a 
     a = a + 1 
    print(n) 

あなたのコードを改善するための提案のカップル:この非常に粗製の方法は、以下の次の操作を行うことです

機能はほとんどその中print()機能を持っていないはずですが。代わりにreturnキーワードを使用してください。 a = a + 1a += 1に、n = n * an *= aに変更することができます。またtry下のタブ付きれると何かがexceptブロックで指定されたエラーをスローした場合、それはその後、except下のタブ付きれるものは何でも実行します何でも実行するを試みますtryexceptを導入することができます。

def supercalcx(a, b): 
    try: 
     n = int(a) 
     a = int(a) 
     b = int(b) 
    except ValueError: 
     return "Unable to convert to integers!" 
    while a <= b: 
     n *= a 
     a += 1 
    return n 

print(supercalcx("1", 2)) 
print(supercalcx(1, 2)) 
+1

特定のエラーなしで 'except'を使うのは悪い習慣です(大部分の時間)。 'ValueError'で' except'を試してみてください。 – Jerrybibo

+0

おっと、忘れました。ありがとう! – ecarl

+0

答えをありがとう、しかし私は浮動小数点値を入力した場合、私はどのようにすることができますか? –