2017-07-03 57 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(ⅰ)%2)== 0]'。 – YiFei

+0

在開始時也可以很方便地轉換爲int,如在輸入('輸入nums:').split(',')]'中的nums = [int(l)for l)。 (然後使用'%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]) 

這給:

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

通知書n轉換成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(「」)是正確的語法

相關問題