我是Python的新手,我正在尝试创建代码,这些代码只会从用户输入的列表中返回偶数。
我早就创建了这个:
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 :(得分: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]
答案 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]
>>>
答案 2 :(得分:0)
如果指定要用逗号分隔split()
,可以使用列表理解做一些事情,如YiFei所述:
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
转换为%2==0
。
答案 3 :(得分:0)
这是因为默认情况下,拆分操作会将空格视为分隔符。 要解决这个问题,我们需要nums.split(“,”)这里的nums已经是一个字符串。 但即使这样,你也会得到白色空间来摆脱它,你需要在分割它们之前替换字符串中的所有空格。 为此,你必须使用nums.replace(“”,“”) 然后你必须将结果列表中的每个元素解析为一个整数,然后查看它是否为偶数然后将其附加到列表中
答案 4 :(得分:0)
使用int(字符串编号)将用户输入转换为整数。
由于您使用列表来存储您的号码,您可以循环浏览列表并检查每个元素是否均匀。
nums.split(',')是正确的语法