colbert6 发表于 2020-6-3 23:27:23

练习1:实现计算求最大公约数和最小公倍数的函数。

def foo(a,b):
    if a <b:
      a,b =b,a
      for i in range(b+1,1,-1):
            if a% i==0 and b %i ==0:
                print("%d和%d的最大公约数是%d"%(a,b,i))
                print("%d和%d的最小公倍数是%d"%(a,b,a*b/i))
                break
print(foo(9,72))
输出结果:
72和9的最大公约数是9
72和9的最小公倍数是72
None
为什么我这个函数最后的输出结果一直有一个none,请问应该如何去掉

Twilight6 发表于 2020-6-3 23:28:42

本帖最后由 Twilight6 于 2020-6-3 23:29 编辑

函数末尾加个 return '' 即可

因为函数没设置返回值

def foo(a,b):
    if a <b:
      a,b =b,a
      for i in range(b+1,1,-1):
            if a% i==0 and b %i ==0:
                print("%d和%d的最大公约数是%d"%(a,b,i))
                print("%d和%d的最小公倍数是%d"%(a,b,a*b/i))
                break
    return ''
print(foo(9,72))

冬雪雪冬 发表于 2020-6-3 23:31:43

把print(foo(9,72))改为foo(9,72)

永恒的蓝色梦想 发表于 2020-6-4 06:41:07

本帖最后由 永恒的蓝色梦想 于 2020-6-4 06:45 编辑

def foo(a,b,/):
    x=a
    y=b
    while y:
      x,y=y,x%y
    return f"{a}和{b}的最大公约数是{x}\n{a}和{b}的最小公倍数是{a*b//x}"

jia159753 发表于 2020-6-4 21:06:32

学到了,你呢
页: [1]
查看完整版本: 练习1:实现计算求最大公约数和最小公倍数的函数。