def oddTuples(aTup):
'''
aTup: a tuple
returns: tuple, every other element of aTup.
'''
num = len(aTup)
newtup = ()
for i in range(0,num+1):
if (i % 2 == 1):
newtup += aTup[i]
else:
continue
return newtup
该函数将元组作为输入并返回包含aTup
奇数输入的元组,即aTup[1]
,aTup[3]
等。在第十行,newtup += aTup[i]
我收到错误。请详细说明原因,请纠正问题。我知道这个问题也有单行解决方案,但我不想要那个。我想知道原因并纠正我在第十行的错误。我很乐意得到帮助。
答案 0 :(得分:4)
您正在将数字本身添加到元组中。只有元组可以添加到元组中。将newtup += aTup[i]
更改为newtup += (aTup[i],)
。这将修复当前错误,但正如@Rockybilly指出的那样,使用range(0, num+1)
是错误的。这将使用太多的数字。将其更改为range(0, num)
。您也可以省略0,因为这是range()
的默认值。
答案 1 :(得分:1)
aTup[1::2]
如果aTup至少有2个元素,应该有用。
切片是Python最好的东西之一。
答案 2 :(得分:0)
您的范围函数中的(num + 1)
为额外,您只需要num
。(我猜您会收到索引错误。)
for i in range(0,num):
if (i % 2 == 1):
newtup += aTup[i]
else:
continue
是的,我监督了元组错误,@ zondo
答案 3 :(得分:0)
元组是不可变的,所以你无法附加它们。我认为将值附加到列表中,当您完成后将列表更改为元组。
def oddTuples(aTup):
newlist = []
for index, element in enumerate(aTup):
if index % 2 == 1:
newlist.append(element)
return tuple(newlist)