增量错误:Python

增量错误:Python,python,increment,Python,Increment,这是我的代码: def create(t): if len (t[0]) != len (t[1]): raise ValueError ('something') for i in range (1): for j in range (len(t[0])-1): if sum (t[i][j]) + (len (t[i][j])-1) >= len (t[0]): raise Valu

这是我的代码:

def create(t):
    if len (t[0]) != len (t[1]):
        raise ValueError ('something')
    for i in range (1):
        for j in range (len(t[0])-1):
            if sum (t[i][j]) + (len (t[i][j])-1) >= len (t[0]):
                raise ValueError ('something')
            else:
                return (t)
我尝试的是:

t = (((2,), (3,), (2, 3),), ((2,), (3,), (3,)))
最初我认为问题在于I和j由于某种原因没有递增,但可能是第二个if子句被忽略了(可能写得不好)?
事先非常感谢,很抱歉没有问题:s

您的第一个猜测是正确的:
i
j
没有递增

内部循环导致函数在第一次迭代时退出。内部循环保证为退出函数的
上升
,或退出函数的
返回
。另外,
对于范围(1)中的i
只执行一次迭代,其中
i==0

也许(我说也许,因为我不知道你的函数应该做什么)解决方案是去掉
else
,并超越
返回
三个停止

此外,
范围(len(t[0])-1)
可能是错误的。尝试
范围(len(t[i]))


对于范围(1)中的i
我看不太合适<如果这样做,代码>i将永远为零。此外,函数遇到
return
语句时会立即终止,因此如果执行
else
子句,则
j
循环将结束。在一个分支中有一个
raise
,在另一个分支中有一个
return
,毫不奇怪j的值从未超过0。你想实现什么?凯文你说得对,我总是搞混了!退货应始终与“def”在同一行。谢谢我这样做了,并在if子句的比较中删除了等号。它仍然不会返回示例中的错误(并且它应该会导致sum(t[0][2])+len(t[0][2])-1大于len(t[0]),这是不相关的,因为
j
对于范围内的j(len(t[0])-1,从来不会具有
2
的值:
对于范围(2)内的j计算为
哦,我明白了,我的原始代码在范围(1)上遇到了相同的问题。非常感谢您。感谢您的时间和耐心
def create(t):
    if len (t[0]) != len (t[1]):
        raise ValueError ('something')
    for i in range (1):
        for j in range (len(t[i])):
            print (i,j)
            if sum (t[i][j]) + (len (t[i][j])-1) > len (t[0]):
                raise ValueError ('something')
    return (t)

t = (((2,), (3,), (2, 3),), ((2,), (3,), (3,)))
print (create(t))