Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2018 17:33:59

ShnurD6
Зарегистрирован: 2018-08-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с возвратом кортежа из функции

Доброго времени суток! Ситуация следующая: написан код

 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)

Пожалуйста, подскажите, почему это происходит?)
заранее спасибо

Отредактировано ShnurD6 (Авг. 26, 2018 17:39:41)

Офлайн

#2 Авг. 26, 2018 18:59:13

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Проблема с возвратом кортежа из функции

ShnurD6
программа выводит ”None"
Очевидно в некоторых случаях не прописан оператор return
например может?
 ....
if (dn == dm) and dm != 1:
     return  ReduceFraction(1, m / n)
...



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version