在 Python 代码中要求用户输入时出现 EOF 错误
EOF error when asking user for input in Python code
程序 "goofin.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
这对我来说效果很好:
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))
我的输入:
15462625
我的输出:
['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
或 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 方法目前使用数字之间的 space,但您也可以定义,例如用逗号分隔元素。
real_list = [int(x) for x in lst.split(',')]
程序 "goofin.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
这对我来说效果很好:
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))
我的输入:
15462625
我的输出:
['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
或 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 方法目前使用数字之间的 space,但您也可以定义,例如用逗号分隔元素。
real_list = [int(x) for x in lst.split(',')]