我开始学习Python 我编写了一个代码来从用户那里获得数字列表并显示偶数:
numbers=list(input("Please enter numbers:"))
def is_even_num():
enum = []
for n in numbers:
if n % 2 == 0:
enum.append(n)
return enum
print(is_even_num())
但是不幸的是,它显示了以下错误 您能否告诉我该错误的含义以及如何解决该错误?
答案 0 :(得分:0)
但是不幸的是,它显示了以下错误。能否请您告诉我该错误的含义以及如何解决该错误?
由于解释器试图应用TypeError,因此您在if n % 2 == 0:
处遇到formatting using %
异常。 input()
返回一个str对象,如果将其传递给list
构造函数,它将在您的字符串中形成一个字符列表。
因此,numbers=list(input("Please enter numbers:"))
将形成str
对象的列表(例如,如果将1 2 3
传递给程序,它将把它转换为str对象的列表:{ {1}})。
您需要使用['1', ' ', '2', ' ', '3']
构造函数将它们转换为int
。如果您只需将程序的第一行更改为int
,它将开始工作
尝试一下:
numbers=list(map(int, input("Please enter numbers: ").split(" ")))
使用list comprehension进行相同操作的Pythonic方法:
numbers=list(map(int, input("Please enter numbers: ").split(" ")))
def is_even_num():
enum = []
for n in numbers:
if n % 2 == 0:
enum.append(n)
return enum
print(is_even_num())
答案 1 :(得分:0)
numbers=list(input("Please enter numbers:"))
会将每个char转换为列表中的一个元素,即,如果您输入1 2 3 4
,则每个空格也将是一个元素。试试
numbers=input("Please enter numbers:").split()
这将省略空格。
此外,您正在尝试将字符串文字与整数进行比较。在您的循环中,将n
解析为整数,即
if int(n) % 2 == 0:
答案 2 :(得分:0)
numbers=[int(i) for i in input().split()]
def is_even_num():
enum = []
for n in numbers:
if n % 2 == 0:
enum.append(n)
return enum
print(is_even_num())
输入存储为字符串,在对它执行任何算术运算之前,我们需要将其类型转换为整数
答案 3 :(得分:0)
数字是字符串列表,包括仅包含空格的字符串
['3', ' ', '5', ' ', '8']
在使用模数%之前,必须删除这些空格,然后将剩余的数字字符串转换为int
numbers = list(input("Please enter numbers:"))
print(numbers)
def is_even_num():
enum = []
for n in numbers:
if n.strip(' '):
if int(n) % 2 == 0:
enum.append(int(n))
return enum
print(is_even_num())