Я только начал изучать Python и пытаюсь выполнить упражнение.Python: Как использовать возвращаемое значение функции в более позднем коде?
Я чувствую, что мне не хватает чего-то действительно элементарного, так как я не могу получить некоторые значения, которые возвращаются, чтобы повлиять на мой код.
Пункт следующего кода состоит в том, чтобы печатать первичные коэффициенты входной доли пользователя, за исключением того, что он будет печатать только простые коэффициенты введенной доли, а не упрощенные дроби.
def gcd(a,b):
while b:
a,b = b,a%b
return a
def simplify_fraction(numerator,denominator):
cd = gcd(numerator,denominator)
(simple_num,simple_denom) = (numerator/cd,denominator/cd)
if simple_denom == 1:
return simple_num
elif cd == 1:
return simple_num,simple_denom
else:
return simple_num,simple_denom
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
while True:
try:
while True:
fraction = input("Input a positive fraction then press enter:")
numerator,denominator = fraction.split("/")
numerator = int(numerator)
denominator = int(denominator)
if denominator == 0:
raise ValueError
elif numerator < 0:
print("That is not a positive fraction, please try again.")
continue
elif denominator < 0:
print("That is not a positive fraction, please try again.")
continue
elif numerator == 0:
print(str(numerator) + "/" + str(denominator) + " -> [0]")
elif numerator == 1:
print(str(fraction) + " -> [1]/" + str(prime_factors(denominator)))
elif int(denominator) == 1:
print(str(fraction) + " -> " + str(prime_factors(numerator)))
else:
simplify_fraction(numerator,denominator)
Я уверен, что я что-то не хватает здесь, чтобы связать свою функцию simplify_fraction на этот мой код блока, но я не могу понять, что это такое.
print(str(fraction) + " -> " + str(prime_factors(numerator)) + "/" + str(prime_factors(denominator)))
while True:
character = str(input('Continue (y/n)? '))
if character == "y":
break
if character == "n":
quit()
else:
print ("That was not a valid choice, please select (y/n).")
continue
except ValueError:
print("That is not a fraction, please try again.")
continue
Вот 2 примера:
вход 3/9 дает 3/9 -> [3]/[3,3]. Я хочу, чтобы это было 3/9 -> [1]/[3].
Ввод 138/24 дает 138/24 -> [2,3,23]/[2,2,2,3]. Я хочу, чтобы это было 138/24 -> [23]/[2,2]
Может кто-нибудь, пожалуйста, дайте мне совет по этому поводу?
Я не совсем понимаю ваш код, но обратите внимание, что 'simplify_fraction (числитель, знаменатель)' в конце вашего цикла ничего не делает, потому что вы не присваиваете результат чему-либо. Просто вызов функции не изменит строки на месте. – Kevin
Вау, это много кода для вопроса «как использовать возвращаемое значение функции». Попытайтесь уменьшить неродственный код. – TarasB
Эй, Тарас, извините, я знаю, что это так, я пытался дать полную картину, чтобы дать полное понимание и ясность. И Кевин, да, это ядро проблемы ... Я пытаюсь понять, как назначить эти результаты, чтобы изменить строки на месте ... работая над изменением строки на данный момент, надеясь, что это сработает. –