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

时间:2020-11-04 11:24:47

标签: python python-3.x

n = int(input(""))
for i in range(n):
  a,b = input("").split()
  if a%b!=0:
    r = a%b
    x = b-r
    print(x)
  else:
    print("0")

错误是:

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

如何将ab设为整数?谁能帮我

1 个答案:

答案 0 :(得分:1)

原因

错误是因为如果您执行input.split(),则结果将是此['3', '5'](假设输入为3 5),并且ab都是字符串

如果对字符串执行%,则会得到'3' % '5',这不是您期望的。这意味着在Python中使用字符串格式会出现错误。

您将得到与此相同的错误:

a = '3'
b = '5'
print(a % b) # this cause the error. you will not get 3 % 5

解决方案

每次出现int()a时,您都可以执行b,但这太难了。 相反,请尝试以下操作:

n = int(input())
for i in range(n):
    a, b = map(int, input().split())
    if a % b != 0:
        r = a % b
        x = b - r
        print(x)
    else:
        print("0")

您可以在Python中使用内置的map()函数,而且,如果没有任何输入提示,只需将其保留为空白-input()