input()出现奇怪的.split()问题

2024-04-23 09:00:48 发布

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

我有一些代码从input()中获取用空格分隔的数字。我试图对它调用.split(),但由于某种原因它将[56 78 90 1 2 3]变成了[78.0,90.0,1.0,2.0]。谢谢

def insert(self, lst):
    for x in lst.split():
        try:
            self.theList.append(float(x))
        except:
            3+4

Tags: 代码inselfforinputdef数字float
3条回答

从字符串lst = "[56 78 90 1 2 3]"开始。它被给出['[56', '78', '90', '1', '2', '3]']的空格分割。注意第一个和最后一个元素中的括号!你知道吗

然后将每个元素解释为在float('[56')float('3]')上失败的浮点,从而导致程序进入您谨慎选择不使用的except情况。你知道吗

下面是如何将整数字符串转换为可以迭代的正确列表,以便您可以将数字重新解释为浮点数,无论您出于何种原因:

import ast
ast.literal_eval(lst.replace(" ", ", ")

你为什么要把一堆整数当作字符串来传递呢?你能告诉我在你的代码中"[56 78 90 1 2 3]"是在什么地方出现的吗?你知道吗

“某种原因”是您正在调用float,它将值转换为float类型。你知道吗

它这样做是因为您使用的是float(x)。如果所有数字都是整数,请使用整数值。否则,在使用float函数时,您可能需要额外的小数位。你知道吗

相关问题 更多 >