from math import sqrt, isclose

def collisiontime(x1,y1,z1,vx1,vy1,vz1,r1,  x2,y2,z2,vx2,vy2,vz2,r2):
    x2 -= x1
    y2 -= y1
    z2 -= z1
    vx2 -= vx1
    vy2 -= vy1
    vz2 -= vz1
    a = vx2**2 + vy2**2 + vz2**2
    b = 2*x2*vx2 + 2*y2*vy2 + 2*z2*vz2
    c = x2**2 + y2**2 + z2**2 - (r1+r2)**2
    D = b**2-4*a*c
    if D < 0:
        return None
    if isclose(D, 0):
        return -b/2/a
    return (-b - sqrt(D)) / 2 /a, (-b + sqrt(D)) / 2 /a

print(collisiontime(0, 0, 0, 2, 0, 0, 2, 25, 0, 0, -3, 0, 0, 3)) #    1=>   <=2
print(collisiontime(0, 0, 0, 2, 0, 0, 2, 25, 5, 0, 1, 0, 0, 3))  #    1=>   <=2  chase wuth touching

print(collisiontime(-7, 5, 0,-1, 0, 3, 3,  10, 7, -6, -2, 0, 4, 6))
print(collisiontime(10, 3, -10,-9, 3, -8,5,  2, 0, 0, -4, 3, -10, 6))