首页 > 解决方案 > 错误:字符串格式化期间并非所有参数都转换了

问题描述

我开始学习 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())

但不幸的是它显示以下错误你能告诉我错误是什么意思,我该如何解决这个错误?

标签: pythonstringfor-looptypesconverters

解决方案


但不幸的是它显示以下错误你能告诉我错误是什么意思,我该如何解决这个错误?

解释if n % 2 == 0:器尝试使用%. input()返回一个 str 对象,如果你将它传递给list构造函数,它将在你的字符串中形成一个字符列表。

因此,numbers=list(input("Please enter numbers:"))将形成一个str对象列表(例如,如果您传递1 2 3给您的程序,它会将其转换为 str 对象列表:)['1', ' ', '2', ' ', '3']

您需要将它们转换为int使用int构造函数。如果您可以将程序中的第一行更改为numbers=list(map(int, input("Please enter numbers: ").split(" "))),它将开始工作

尝试这个:

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())

使用列表理解做同样事情的 Pythonic 方式:

print([i for i in map(int, input("Please enter the number: ").split(" ")) if not i % 2])

推荐阅读