增量错误: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))