Python问题gcode modifi的if语句中存在多个“or”条件

2024-04-26 14:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本来修改学校项目的一些gcode。我的编程能力很差,但我在互联网的帮助下,这方面的工作,但陷入了一个if语句与3个不同的选择。你知道吗

为此,我需要选择以“G0”和“G1”开头的行,并考虑长度条件。你知道吗

只需要2个条件就可以了(它会创建一个输出文件以便我确认)

我试着添加下面显示的第3个条件,但是它检索到一个空文件——所以我假设它不起作用(就我所研究的而言,这似乎是正确的方法)。你知道吗

if(cells[0] !="G0" or cells[0] != "G1" or len(cells) < 4):
    return

功能齐全:

class Point:
x = 0
y = 0
feed = 0

def GetPoint(line):
    line = line.rstrip("\n")
    cells = line.split(" ")
    point = Point()


if(cells[0] != "G1" or len(cells) < 4):
    return

if(cells[1].startswith("F")):
    point.feed = float(cells[1].split("F")[1])
    point.x = float(cells[2].split("X")[1])
    point.y = float(cells[3].split("Y")[1])

else:
    point.x = float(cells[1].split("X")[1])
    point.y = float(cells[2].split("Y")[1])

return point

Tags: or文件lenreturniffeedlinefloat
2条回答

正如已经回答的,你有一个条件,将永远评估为真。如果要提取除G0和G1命令(或长度条件)以外的所有命令,请尝试以下操作

if not (cells[0] == "G0" or cells[0] == "G1") or len(cells) < 4:

这样可以检查单元格[0]是否包含G0或G1,然后反转结果。这也可以写成

if cells[0] != "G0" and cells[0] != "G1" or len(cells) < 4:

但这可能不是那么直观。你知道吗

注意,在第一个块中,cells[0] != "G0" or cells[0] != "G1"是两个条件。如果cells[0]"G0",那么第二个将计算为True。如果cells[0]"G1",那么第一个将计算为True。如果是别的,两者的计算结果都是True。这意味着无论cells[0]的值是多少,if都将计算为True。你知道吗

如果它有助于您思考,那么为每个条件的真/假编写一个真值表,并决定您希望if语句的计算结果。你知道吗

相关问题 更多 >