2017-07-03 12 views
2

私はPythonにはかなり新しく、ユーザー入力から与えられたリストから偶数だけを返すコードを作成しようとしています。私は上で早期にこれを作成していたPython 3.x:ユーザ入力リストから偶数を抽出する方法は?

nums = input('Enter a sequence of numbers separated by commas: ') 
lst = str.split(nums) 
print(lst) 

これは、ユーザが与えたものを返しますが、コンマはまだ結果になります。例えば、私が5,6,7を入力すると、 ['5、'、 '6、'、 '7']これを修正する上で、偶数だけを表示したい。 %2 == 0を使ってチェックする必要があることは分かっていますが、実装方法はわかりません。

+0

試行のリスト内包 'LST = [I iについてLSTであれば(INT(I)%2)== 0]'。 – YiFei

+0

入力時に 'nums = [int(l)in '(' nums: ').split('、 ')]'のように、開始時に 'int'に変換すると便利かもしれません。 (その後、 '%2'ロジックを使用します。) –

答えて

2

です:

  1. まず整数にリスト内の各項目を変換します。
  2. 次に、あなたがユーザーの入力でコンマで分割したい場合は、あなたが明示的にstr.split()にそれを伝える必要があり、注意点として

リストから偶数を抽出するために、リストの内包表記を使用します。


>>> nums = input('Enter a sequence of numbers separated by commas: ') 
Enter a sequence of numbers separated by commas: 1,2,3,4,5,6 
>>> # Step 1 
>>> lst = [int(n) for n in nums.split(',')] 
>>> lst 
[1, 2, 3, 4, 5, 6] 
>>> # Step 2 
>>> [n for n in lst if n % 2 == 0] 
[2, 4, 6] 
>>> 
0

あなたはカンマで分割したいsplit()に指定した場合はイーフェイが述べたように、あなたはリストの内包表記を使って何かを行うことができます:

nums = input('Enter a sequence of numbers separated by commas: ') 
lst = str.split(nums,',') 
print([n for n in lst if (int(n)%2) == 0]) 

はこれができます:にnを変換する

Enter a sequence of numbers separated by commas: 2,5,8,10 
['2', '8', '10'] 

お知らせ​​を確認するとintとなります。

4

まず、すべての文字列アイテムを整数に変換する必要があります。 mapでこれを効率的に行うことができます。その後、奇数以外にはfilterが必要です。

filter(lambda x: x % 2 == 0, map(int, str.split(nums, ','))) 

python3を使用している場合は、出力をlist()のリストに変換してください。


デモ:

>>> string = '2,5,8,12,5,6,7' 
>>> list(filter(lambda x: x % 2 == 0, map(int, str.split(string, ',')))) 
[2, 8, 12, 6] 
0

デフォルトで分割操作が区切り文字としてスペースを考慮したためです。 この問題を解決するにはnums.split( "、")が必要です。numsはすでに文字列です。 でも、それを取り除くために空白を取得する場合、それらを分割する前に文字列のすべての空白を置き換える必要があります。 このためにnums.replace( ""、 "")を使用する必要があります 次に、結果のリストの各要素を整数に解析し、その偶数がリストに追加されているかどうかを確認する必要があります

0

int(文字列番号)を使用してユーザー入力を整数に変換します。

数字を保存するためにリストを使用しているので、リストをループして、偶数の場合は各要素をチェックできます。

nums.split(「」)あなたは二段階でこれを行うことができ、正しい構文

関連する問題