代码无法访问 - 错误

时间:2017-03-16 22:10:54

标签: python

newb在这里,我试图比较矩阵及其转置矩阵与公差之间的差异。首先,我需要检查它是一个正方形,然后如果不同是与tollerance.I我得到一个错误,最后两行代码是无法访问。对于上面的输出应该是True True,但我只得到第一个True(即它是一个方阵。

import numpy as np
a= np.array(([[1, 2, 3,],[2, 3, 4],[3, 4, 1]]))

def check_symmetric(a,tol):
    b = a.transpose(1, 0)
    print (a)
    print(b)
    rows = a.shape[1]
    col = a.shape[0]
    z= abs(a-b)
    print(z)
    if rows != col: #check to make sure the list is a square
            return False
    return True;
    result = (abs(a - b) <= tol).all()
    print(result)



print check_symmetric(a,tol=1e-8)

2 个答案:

答案 0 :(得分:1)

将return语句移到函数的底部:

return True;
result = (abs(a - b) <= tol).all()
print(result)

会变成:

result = (abs(a - b) <= tol).all()
print(result)
return True;

return语句将停止执行函数并将控制权返回给它调用的上下文,在本例中为行:

print check_symmetric(a,tol=1e-8) 

这意味着您的代码现在的方式,最后两行永远不会被执行,因为执行的上下文已经回到函数之外。这就是为什么你没有看到第二份印刷声明的原因。

答案 1 :(得分:0)

在最后两行之前有const currentMessagesForId = R.curry((id, msgs) => R.compose( R.values, R.map(R.compose(R.head, R.sort(R.descend(R.prop('sendDate'))))), R.groupBy(m => m.sender.id !== id ? m.sender.id : m.recipient.id) )(msgs)) currentMessagesForId(currentUserId, rawMessages) 。该函数将在该点返回,并且永远不会执行这些行。这就是他们无法接触的原因。

很可能你想把那条线移到最后?