2016-08-23 4 views
1

私はPythonにはかなり新しく、簡単なプログラムを作ろうとしました。
与えられた数の引数をとり、与えられたすべての偶数を出力する関数を定義しようとしました。
しかし、どのように多くの数字が与えられたのか、そしてどのようにそれらを調べるか、より正確には、それぞれをチェックするループを作る方法を知る方法はわかりません。前もって感謝します!与えられたすべての引数を調べてその値を確認する

これが私の悪いコードです:

def even_number_filter(*arg): 
    a = len(sys.argv) 
    for (arg % 2 == 0): 
    print ("\n%d is an even number") % arg 

even_number_filter (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
+0

は、[リストの内包](https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions)を見てみましょう – FujiApple

答えて

2

あなたはargの上に自分自身を繰り返すことができ、それは単に今後の参考のために、引数

def even_number_filter(*arg): 
    for i in arg: 
     if i % 2 == 0: 
      print('{} is an even number'.format(i)) 

>>> even_number_filter(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
2 is an even number 
4 is an even number 
6 is an even number 
8 is an even number 
10 is an even number 

のタプルである、しかし、私はこの種を落胆うデザインの。代わりに、私は単純に、直接、このような本を使用して設定&リストの内包を行うにlistまたはtuple

+0

ありがとうございます。ちなみに、私の投稿をどのように素早く編集しましたか?私が終わってから10秒後にそれを文字通り編集しました。 –

+1

コーヒーがたくさん! – CoryKramer

2

としていくつかの順序を受け入れる:

print {x for x in {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} if x % 2 == 0} 
print [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] if x % 2 == 0] 

が生成されます

あなたが使用してみてください可能
set([8, 2, 4, 10, 6]) 
[2, 4, 6, 8, 10] 

明示的なforループを介した理解(またはジェネレータ)あまり重要ではありませんが、あなたは基本的なことを学び始めていますが、良い習慣から始めるのは良いことです!

0

理想的には、varargsではなくiterable(リストまたはジェネレータ)として引数を取ることが理想的です。その後、これはリストの内包表記を使用するのに理想的な時間です:

def even_numbers(numbers): 
    return [ 
     num for num in numbers 
     if num % 2 == 0 
    ] 


def even_number_filter(numbers): 
    for num in even_numbers(numbers): 
     print "{0} is even".format(num) 


if __name__ == '__main__': 
    even_number_filter(range(10)) 

0 is even 
2 is even 
4 is even 
6 is even 
8 is even 
関連する問題