在Python cod中请求用户输入时出现EOF错误

2024-10-04 03:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

“计划”古芬.py“要求用户提供一个列表,并从列表中删除奇数并打印出新列表。这是我的代码:

def remodds(lst):
    result = []
    for elem in lst:
        if elem % 2 == 0:          # if list element is even
            result.append(elem)    # add even list elements to the result 
    return result


justaskin = input("Give me a list and I'll tak out the odds: ") #this is 
                                                                #generates 
                                                                #an EOF 
                                                                #error

print(remodds(justaskin))      # supposed to print a list with only even-
                               # numbered elements


#I'm using Windows Powershell and Python 3.6 to run the code. Please help! 

#error message: 

#Traceback (most recent call last):
# File "goofin.py", line 13, in <module>
#    print(remodds(justaskin))
# File "goofin.py", line 4, in remodds
#    if elem % 2 == 0:
#TypeError: not all arguments converted during string formatting

Tags: thetoinpy列表ifisresult
2条回答

这对我来说很好:

def remodds(lst):
    inputted = list(lst)
    result = []
    for elem in inputted:
        if int(elem) % 2 == 0:          
            result.append(elem)
    return result


justaskin = input("Give me a list and I'll tak out the odds: ") 
print(remodds(justaskin))   

我的意见:

^{pr2}$

我的输出:

['4', '6', '2', '6', '2']

说明:

- convert the input (which was a string) to a list
- change the list element to an integer

希望这有帮助!在

您的输入lst不是一个列表,即使您键入2, 13, 14, 7或{}之类的列表。当你把它和你的elem循环分开时,它仍然是一个字符串,这意味着每个单独的字符都是一个循环。您必须首先拆分lst,然后将它们转换成数字。在

def remodds(lst):
    real_list = [int(x) for x in lst.split()]
    result = []
    for elem in real_list:           #and now the rest of your code

split方法目前使用的是数字之间的空格,但您也可以定义元素之间是用逗号分隔的。在

^{pr2}$

相关问题 更多 >