我想将用户的输入作为列表,但出现错误

时间:2018-09-09 03:36:19

标签: python list input

data

3 个答案:

答案 0 :(得分:1)

input评估作为输入给出的指定字符串。因此,指定的字符串必须是有效的python表达式。

要获取列表,可以将输入内容明确指定为列表

>>> lst = input("Enter list values : ")
Enter list values : list([1,2,3,4,5,6])
>>> lst
[1, 2, 3, 4, 5, 6]

或者,您可以使用raw_input获取一个字符串,split字符串,并将map的每个元素添加到int

>>> lst = map(int, raw_input("Enter list values : ").split())
Enter list values : 1 2 3 4 5 6
>>> lst
[1, 2, 3, 4, 5, 6]

答案 1 :(得分:0)

    lst = input("Enter list values : ")

    def count(lst):
        even = 0
        odd = 0
        for i in lst:
            if i%2 ==0:
                even+=1
            else:
                odd+=1
        return even,odd

    even,odd = count([int(val) for val in lst.split(',')])
    print("Even : {even} Odd : {odd} ".format(even=even,odd=odd))

答案 2 :(得分:0)

lst = input("Enter list values : ").split()
lst_to_int = [int(x) for x in lst]
even = 0
odd = 0
for i in lst_to_int:
    if i%2 ==0:
       even+=1
    else:
       odd+=1
print(even, odd)
print("Even : ("+str(even)+") Odd : ("+str(odd)+")")

我决定简化您的代码以使其易于阅读。首先将输入列表作为str,然后通过列表理解将其转换为int。之后,迭代lst_to_int并计算偶数和奇数。然后将其打印出来。

希望它会有所帮助:)

编辑:从OP的注释中请求也使用功能进行回答。这是代码:

def count(even, odd, lst_to_int):
    for i in lst_to_int:
        if i%2 ==0:
           even+=1 
        else:
           odd+=1
    print(even, odd)
    print("Even : ("+str(even)+") Odd : ("+str(odd)+")")
even = 0
odd = 0 
lst = input("Enter list values : ").split()
lst_to_int = [int(x) for x in lst]
result = count(even, odd, lst_to_int)