将列表中的项目转换为int

时间:2015-12-07 23:52:27

标签: list python-3.x int

从下面的代码中,我得到:TypeError:不能将序列乘以非类型' list'

x = list(input("Input a list of integers, seperated by a comma:"))
def histogram(x):
    for y in x:
        print("*"*x)
histogram(x)

1 个答案:

答案 0 :(得分:0)

我假设你想要的东西看起来有点像:

>>> histogram('1,5,1,3')
*
*****
*
***

你必须改变一些事情。

首先,x = list(input())将为您提供输入中的字母/字符列表。所以list('1,2,3')会产生['1', ',', '2', ',', '3'],我相信你不想处理逗号。

相反,您应该使用string.split(',')来分割每次出现的逗号。根据你想要的方式,你可以在你的函数内部(就像我在下面做的那样)或直接到输出,这样函数就需要一个数字字符串列表。

我说“数字字符串列表”因为input返回一个字符串,所以即使你输入数字,它也会给你一些字符串。您必须确保明确地转换为int才能将'*'乘以它。

最后,问题的实际答案是什么?您正在呼叫print("*"*x)。我认为您的意思是print("*"*y)或更确切地说,print("*"*int(y))

以下是我假设工作代码,但同样,我不知道您的预期输出实际是什么。

>>> x = input("Please enter comma separated list of numbers: ")
Please enter comma separated list of numbers: 
>>> x = input("Please enter comma separated list of numbers: ")
Please enter comma separated list of numbers: 1,2,3,4,5,6,1,2
>>> def histogram(x):
    for y in x.split(','):
        print("*"*int(y))


>>> histogram(x)
*
**
***
****
*****
******
*
**