从下面的代码中,我得到: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)
答案 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)
*
**
***
****
*****
******
*
**