Python 我的程序打印加入的列表,而不是添加它';s元素
我被要求编写一个名为summer的函数,它获取一个列表并返回其总和,但只有当列表中的所有元素都是同一类型时才返回。 例如,如果:Python 我的程序打印加入的列表,而不是添加它';s元素,python,list,function,Python,List,Function,我被要求编写一个名为summer的函数,它获取一个列表并返回其总和,但只有当列表中的所有元素都是同一类型时才返回。 例如,如果: summer(['a','b','c']) 结果将是: abc 2 如果 结果将是: abc 2 但是 如果 它将打印不同类型的元素 这是我的密码: def summer(lst): summary=0 for i in range(len(lst)): if i==0: summary=lst[0]
summer(['a','b','c'])
结果将是:
abc
2
如果
结果将是:
abc
2
但是
如果
它将打印不同类型的元素
这是我的密码:
def summer(lst):
summary=0
for i in range(len(lst)):
if i==0:
summary=lst[0]
else:
summary+=lst[i]
return summary
lst=input("Insert list ")
lst=lst.split(',')
print(summer(lst))
我的代码只是连接了所有内容:
如果输入为True,False
则打印为TrueFalse
请帮我修一下,谢谢 首先要做的是检查每个元素的类型 <> >在<<代码> /<代码> > <代码> > 循环中,考虑检查所有元素是否属于同一类型。比如:
for item in lst:
if (type(item) != lst[0]):
break;
如果我正确理解了您的问题,只有在所有元素之间没有差异的情况下,才应该执行所需的操作
我希望可以澄清 我认为这可能是您正在尝试做的事情,或者有点接近
def summer(lst):
summary=0
if all(isinstance(i,int) for i in lst):
return sum(lst)
if all(isinstance(i,str) for i in lst):
return ''.join(lst)
else:
return 'Elements not the same'
summer([True,False,True])
输出:
>>> summer(["a", "b", "c"])
'abc'
>>> summer([1, 2, 3])
6
>>> summer([True, False, True])
2
>>> summer([True, False, "A"])
TypeError: All items must have the same type!
这条规则不准确<代码>'a'、'b'、'c'这些都不一样吗?还是说实际的
类型(val)
?如果是这样,您拼错了“真”、“假”、“真”
,并且应该是真、假、真
,没有引号。实际类型:“a”、“b”、“c”都是字符串“真”、“假”、“真”都是布尔值summer()函数中没有任何内容可以检查值是否是相同的类型。输入()
始终返回字符串,lst.split()
始终返回字符串列表。您的代码中没有任何内容试图将数字字符串转换为数字,将布尔字符串转换为布尔值,等等。@Daniel.Agranat No,“True”
不是布尔值,也不是编程术语。这仍然是一个字符串。您想到的是True
,它是一个布尔值。这同样适用于'1'
,它也是一个字符串,而不是一个数字。在程序上就是这样。我作为一个人,可以看出这是一个数字。这就是为什么python有'1'。例如isdigit()
。
>>> summer(["a", "b", "c"])
'abc'
>>> summer([1, 2, 3])
6
>>> summer([True, False, True])
2
>>> summer([True, False, "A"])
TypeError: All items must have the same type!