Найти - Пользователи
Полная версия: Проблема с возвратом кортежа из функции
Начало » Центр помощи » Проблема с возвратом кортежа из функции
1
ShnurD6
Доброго времени суток! Ситуация следующая: написан код
 from math import sqrt
 
n1 = int(input())
m1 = int(input())
 
 
def MinDivisor(n): # наименьший делитель числа
    i = 2
    while n % i != 0:
        if i >= sqrt(n):
            return n
        i += 1
    return i
 
 
def ReduceFraction(n, m):
    dn = MinDivisor(n)
    dm = MinDivisor(m)
    if (dn == dm) and dm != 1:
        ReduceFraction(n / dn, m / dm)
    elif m % n == 0 and n != 1:
        ReduceFraction(1, m / n)
    if n == 1 or dn != dm:
        return n, m
 
 
print(ReduceFraction(n1, m1))
, который должен сокращать дроби.

(например:
ввод:
2
4
# типа дробь 2\4
вывод:
1
2 )

Код идеально работает если 23-ую (
  return n, m 
) строчку заменить на "
 print(n, m)
“, но я хочу, чтобы ф-ция ReduceFraction() возвращала кортеж, и print выводил его уже вне ф-ции.

Вопреки здравому смыслу и значению дебагера на этом моменте, программа выводит ”None" на любых тестах, где числа можно сократить (Например: 12 16)

Пожалуйста, подскажите, почему это происходит?)
заранее спасибо
doza_and
ShnurD6
программа выводит ”None"
Очевидно в некоторых случаях не прописан оператор return
например может?
 ....
if (dn == dm) and dm != 1:
     return  ReduceFraction(1, m / n)
...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB