1/2 выдаст 0, т.к. он думает, что это целочисленное деление. Чтобы объяснить, что делим дробные числа нужно хотя бы одно из них явно написать, как нецелое, например: 1./2 выдаст 0.5, как мы и ожидали Тоже самое происходит и при делении на переменные. Например 1/x может неожиданно оказаться нулём, если x -- целочисленный. Спасает всё тот же приём 1./x, либо нужно явно задать х, как float: 1/float(x)