引数

2016-11-08 7 views
-6

コンパイラに欠けているキーワードエラーがプライム(list、num)に欠けているのを見せていますが、これを正しく実行すると思います。 しかし、なぜ、印刷のためのキーワード引数エラー(リスト、NUM)引数

num = int(input('Please enter a number : ')) 
list = [i for i in range(2,int((num/2) +1))] 

def prime(*arg , n): 
    for test in arg: 
     if n % test == 0 : 
      print('%d number is not a prime number.' %n) 
     elif n == 1 or n == 0: 
      print('Number is bellow 2.') 
     else : 
      print('It is a prime number') 

prime(list, num) 

+1

**「なぜ私にこの出来事は?」**「なぜ、あなたに起こって何ですか?」 ** "このエラー" ** "何のエラー?" – byxor

+0

上記のエラーを出したコードの関連部分を投稿し、エラーの内容と解決方法を正確に記述してください。 – smac89

+1

'* args'の後にはキーワード引数または' ** kwargs'しか置くことができません。位置を示す引数ではありません。そして、 'list'の強調表示は、その名前がPython(builtin list)に属するというヒントを与えます。 –

答えて

0

構文的には、キーワードのみ引数から*を削除示しています引数リストに*argの後に表示される名前付き引数としてコード化されています。このような引数はすべて、呼び出し中のキーワード構文を使用して渡す必要があります。

たとえば、次のように、aは、名前や位置によって渡され、 bは余分な位置引数を収集し、cはキーワードのみで渡さなければなりません。

>>> def kwonly(a, *b, c): 
     print(a, b, c) 

>>>>kwonly(1, 2, c=3) 
1 (2,) 3 

>>>kwonly(1, 2, 3) 
TypeError: kwonly() missing 1 required keyword-only argument: 'c' 

したがって、キーワード引数としてのみnを渡す必要があります。

def prime(*arg , n): 

nはキーワードのみの値で渡さなければなりません

prime(list, n=num) 
0

argパラメータ

def prime(arg, n): 
    # rest of code here 
+0

thnxですが、引数として値リスト/タプルを渡すために* argを使用していませんか? @ smac89 – Tuhin

+0

@Tuhinでは、引数をリスト/タプルとして渡すために '*'は必要ありません – smac89