无法创建能够根据用户输入在整数和浮点数之间进行切换的列表



代码应该创建一个包含五个列表的列表,每个列表都是根据用户每次输入的数字(五个(创建的。因此,例如,如果用户输入

1 2 3 4 5
1 2
1.5 2
2.2
1

输出应为: [[1, 2, 3, 4, 5], [1, 2], [1.5, 2], [2,2], [1]]任何帮助,不胜感激。我知道要解决此问题,您需要将字符串转换为 int 或浮点数,但似乎无法让它工作。

nlist = []
n = len(nlist)
while n < 5:
    num = input("Enter a Number: ").split()
    for x in num:
        if '.' in num[x]:
            num[x] = float(num[x])
        else:
            num[x] = int(num[x])
    nlist.append(num)    
    n = n + 1
print(nlist)
基本上在你的

代码中,你尝试访问for in循环中列表num的第x个元素,但是x不是列表中元素的索引,而是对它的引用。

看看修改后的代码:

nlist = []
n = len(nlist)
while n < 5:
    num = input("Enter a Number: ").split()
    tmplist = []
    for x in num:
        if '.' in x:
            x = float(x)
        else:
            x = int(x)
        tmplist.append(x)
    nlist.append(tmplist)    
    n = n + 1
print(nlist)

因此,对于以下输入:

Enter a Number: 1 2 3 4 5
Enter a Number: 1 2
Enter a Number: 1.5 2
Enter a Number: 2.2
Enter a Number: 1

它将输出:

[[1, 2, 3, 4, 5], [1, 2], [1.5, 2], [2.2], [1]]

list comprehensionstr.find 一起使用以查看是转换为 float 还是int

>>> out = []
>>> for i in range(n): 
        inp = input().split() 
        out.append([ float(ele) if ele.find('.')>-1 else int(ele) for ele in inp])

#driver 值 :

IN : n = 5
IN : 
1 2 3 4 5
1 2
1.5 2
2.2
1
OUT : [[1, 2, 3, 4, 5], [1, 2], [1.5, 2], [2.2], [1]]

此方法可以达到您所追求的效果,并且行数要少得多:

nList = []
for n in range(5):
    #Takes an input "5 3.5 5 2 3" converts it to [5, 3.5, 5, 2, 3]
    listItems = list(map(eval, input("Numbers for sub-list: ").split()))
    #Append the list to the nList
    nList.append(listItems)
print(nList)

因此,在">listItem"变量中,它不是嵌套两个循环,而是简单地将输入作为字符串:

"5 3.5 2"

拆分它:

input().split()
["5", "3.5", "2"]

然后将每个项目映射到"eval",根据字符串选择浮点数或整数:

list(map(eval, input().split()))
[5, 3.5, 2]

重要说明:">eval"可能是一个危险的命令,在进一步使用它之前,请务必广泛查找有关它的文档。查看下面的评论以获取更多详细信息。

或者如果您不想使用 eval,请考虑以下解决方案:

nList = []
for n in range(5):
    itemList = input("Numbers to add: ").split()
    subList = []
    for item in itemList:

        if "." in item:
            item = float(item)
        else:
            item = int(item)
        subList.append(item)
    nList.append(subList)
print(nList)

相关内容

最新更新