Python IF argument is true, following arguments ignored
我写了一个if,但忽略了它的缩进参数。代码如下:
1 2 3 4 5 6 7 | else: try: if grafo.node.index([int(va),int(vb)]) is True: print("Arco já existe") except: Beta.criararesta(grafo,va,vb) print(grafo.node) |
这是一个叫做:
1 2 3 4 5 | class graph: v = 0 a = 0 ponteiro = [] node = [] |
号
没有回溯或错误消息,但如果我打印列表,则不会插入圆弧,因此如果工作了。但为什么在执行期间会完全忽略if下的打印?
如果我删除try/except并继续插入,这就是回溯。
1 2 3 4 5 6 | Traceback (most recent call last): File"C:/Python33/Archive/PythonGrafos/Alpha.py", line 96, in <module> menugrafos() File"C:/Python33/Archive/PythonGrafos/Alpha.py", line 56, in menugrafos if grafo.node.index([int(va),int(vb)]): ValueError: [0, 1] is not in list |
谢谢你的帮助。
如果只想在布尔上下文中测试
1 | if grafo.node.index([int(va),int(vb)]): |
这仍然存在问题,因为
1 2 3 4 5 6 7 8 | try: i = grafo.node.index([int(va), int(vb)]) except ValueError: Beta.criararesta(grafo,va,vb) print grafo.node # maybe assign i to something useful here, or None, depending on what you're doing with it else: print("Arco já existe") |
号
另外,毯子
1 2 | except ValueError: Beta.criararesta(grafo,va,vb) |
当您使用的方法可能会对正常输入合理地抛出异常时,最好在
1 2 3 4 5 6 | iva = int(va) ivb = int(vb) try: i = grafo.node.index([iva, ivb]) except ValueError: Beta.criararesta(grafo, va, vb) # or possibly (grafo, iva, ivb), depends on the implementation |
。
最后,您应该使用
1 2 3 4 5 | if [int(va),int(vb)] in grafo.node: print("Arco já existe") else: Beta.criararesta(grafo,va,vb) print grafo.node |
似乎
请尝试以下代码以了解您的
1 2 3 4 | if grafo.node.index([int(va),int(vb)]) is True: print("Arco já existe") else: print("Didn't enter if, got {}".format(grafo.node.index([int(va),int(vb)]))) |
。
另外,请注意,