Создать фракцию в Python - PullRequest
       42

Создать фракцию в Python

0 голосов
/ 05 февраля 2019

В школе мне дали задание определить имя функции «дробь», работающую как Модули дроби.Вот как я это делаю:

def GCD(x,y):
  while y!= 0:
    (x,y) =(y,x%y)
  return x  
def fraction(a,b):
  a/=GCD(a,b)
  b/=GCD(a,b)
  print(str(int(a))+"/"+str(int(b)))

Но когда я попытался увидеть, как это будет работать, получилось так:

fraction(45,9)
5/9

Я не знаю, где я былнеправильно, может кто-нибудь помочь мне разобраться?Большое вам спасибо.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

В вашей фракции def,

def fraction(a,b):
  a/=GCD(a,b)
  b/=GCD(a,b)
  print(str(int(a))+"/"+str(int(b)))

Вы изменили a.a стало 45/9 = 5. b, деленное на GCD (5,9) (что равно 1), будет просто b.Вместо этого вы можете сохранить GCD во временной переменной и разделить ее на две.

 def fraction(a,b):
  gcd = GCD(a,b)
  a//=gcd
  b//=gcd
  print(str(int(a))+"/"+str(int(b)))
0 голосов
/ 05 февраля 2019

Большое спасибо за ваши полезные ответы, я понял, что я сделал не так, и сделал новый, объединяющий все ваши ответы.Вот новый:

def GCD(x,y):
  while y!= 0:
    (x,y) =(y,x%y)
  return x  
def fraction(a,b):
  gcd=GCD(a,b)
  a=a//gcd
  b=b//gcd
  print(str(a)+"/"+str(b))

Большое вам спасибо еще раз, вы сделали мой день.

0 голосов
/ 05 февраля 2019

вы изменяете a перед тем, как рассчитать GCD для b;поэтому ваш второй GCD расчет всегда будет возвращать 1.

, вы можете попробовать это:

def fraction(a,b):
  g = GCD(a,b)
  a //= g
  b //= g
  print("{}/{}".format(a, b))

также обратите внимание, что я использовал целочисленное деление (floordiv) // так что я не получаю плавающее число, так как мне приходится возвращаться в int.

...