Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的程序打印加入的列表,而不是添加它';s元素_Python_List_Function - Fatal编程技术网

Python 我的程序打印加入的列表,而不是添加它';s元素

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的函数,它获取一个列表并返回其总和,但只有当列表中的所有元素都是同一类型时才返回。 例如,如果:

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!