Python 3给了我无法解决的错误

mat*_*ttm -1 python conditional

下面是代码:

import turtle
import math

def drawTree(segments,size):
    """
    :param segments: refers to number of extensions from the previous
    :param size: refers to the length of the initial extension
    """
    if (segments < 0.0 | size < 0.0):
        print("Invalid Input")
    elif (segments == 0 | size == 0):
        pass
    elif segments > 0:
        i = 1
        for i in range(6):
            turtle.down()
            turtle.forward(size)
            turtle.back(size)
            turtle.right(60)
            i -= 1
            if segments != 0:
                size *= (1/3)
                turtle.forward(size)
                turtle.back(size)
                segments -= 1
                drawTree(segments, size)
def main():
    drawTree(1, 200)
    input("Press ENTER to exit")

main()
Run Code Online (Sandbox Code Playgroud)

下面是错误列表:

Traceback (most recent call last):
  File "C:/Users/MATTHEW/PycharmProjects/snowflake/snowflake.py", line 36, in <module>
    main()
  File "C:/Users/MATTHEW/PycharmProjects/snowflake/snowflake.py", line 33, in main
    drawTree(1, 200)
  File "C:/Users/MATTHEW/PycharmProjects/snowflake/snowflake.py", line 14, in drawTree
    if (segments < 0.0 | size < 0.0):
TypeError: unsupported operand type(s) for |: 'float' and 'int'
Run Code Online (Sandbox Code Playgroud)

错误并没有真正解释.实际上,这个代码运行正常,直到我添加了最后一个for循环,并且由于某种原因,它停止了.

Mar*_*ers 5

您使用的是错误的运算符.对于布尔OR,请使用or运算符:

if (segments < 0.0 or size < 0.0):
Run Code Online (Sandbox Code Playgroud)

elif (segments == 0 or size == 0):
Run Code Online (Sandbox Code Playgroud)

所述|操作者是一个位操作符 ; 它将布尔逻辑应用于整数的各个位.