Python上两个数字的最大公共除法器

2024-10-02 20:43:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助检查一点代码:

def mcd(n1,n2):
  mxcd = 0
  for i in range(1,n1):  
    f = n1 % i  
    for j in range(1,n2):
      g = n2 % j 
      if (f == 0 and g == 0 and f == g): 
        mxcd = f  
      else: 
        mxcd = "No hay comun divisor"
  return mxcd 

我有问题,因为它似乎从来没有进入第一个if,它总是进入else,我尝试改变缩进顺序,从第二个for取出if,但它不起作用。如果有人能帮忙那就太好了。你知道吗


Tags: andno代码inforifdefrange
2条回答

您的if语句逻辑已关闭。你知道吗

你想要:

if (f==0 and g==0 and i==j):
    mxcd = i

你明白为什么吗?你知道吗

这个函数还有其他一些问题,但这就是if不起作用的原因。你知道吗

您可以从打印出fg的状态开始,看看为什么在if语句中没有发生任何事情。你知道吗

def mcd(n1,n2):
  mxcd = 0
  for i in range(1,n1):
    f = n1 % i
    print('i is {}, f is {}'.format(i, f))
    for j in range(1,n2):
      g = n2 % j
      print('\n  j is {}, g is {}'.format(j, g))
      if (f == 0 and g == 0 and f == g): 
        mxcd = f  
      else: 
        mxcd = "No hay comun divisor"
  return mxcd 

运行类似mcd(2,4)的程序可以让您了解很多:

i is 1, f is 0
  j is 1, g is 0  
  j is 2, g is 0    
  j is 3, g is 1
'No hay comun divisor'

打开if语句,您可以使用类似的技巧看到它:

def mcd(n1,n2):
  mxcd = 0
  for i in range(1,n1):  
    f = n1 % i  
    for j in range(1,n2):
      g = n2 % j 
      if (f == 0 and g == 0 and f == g): 
        print('hello')
        mxcd = f  
      else: 
        mxcd = "No hay comun divisor"
  return mxcd 

> mcd(4,8)

hello
hello
hello
hello
hello
hello
'No hay comun divisor'

从这里开始,您需要纠正一些问题以获得正确的答案,但我将把这个练习留给您:)

相关问题 更多 >