此错误“不是在格式化字符串时转换所有参数”的意思是什么?

时间:2019-08-10 19:07:42

标签: python-3.x

我正在从用户输入两个数字以获取GCD。 在

处显示错误

P.S。附上代码

def gcd(a,b):
   if b==0:
      return a
   return gcd(a,a%b)


a = input("Enter first number: ")
b = input("Enter second number: ")
res = gcd(a,b)
print("GCD of {1} and {2} is {3}".format(a, b,res))

显示在的错误 第4行-返回gcd(a,a%b) 第9行-res = gcd(a,b)

TypeError:在字符串格式化期间并非所有参数都已转换

1 个答案:

答案 0 :(得分:0)

存在三个问题:

  1. 算法错误。递归调用应为return gcd(b, a%b)

  2. 函数input()返回一个字符串。因此,您需要使用int()将结果转换为数字或整数。

  3. format()中的位置占位符从零开始。因此正确的占位符是{0}{1}{2}

固定代码为:

def gcd(a,b):
   if b==0:
       return a
   return gcd(b, a%b)


a = int(input("Enter first number: "))
b = int(input("Enter second number: "))
res = gcd(a,b)
print("GCD of {0} and {1} is {2}".format(a, b, res))