因此,当尝试将参数num1和num2传递给函数gcd时,我遇到了字符串格式错误。我不知道如何解决这个问题。因为我是Python编程的新手,所以请耐心等待。谢谢!
#!/usr/bin/python
import sys
from collections import defaultdict
lines = sys.stdin.read()
lineArray = lines.split()
listLength = len(lineArray)
def gcd(a, b):
c = 0
if a > b:
r = a%b
if r == 0:
return b
else:
return gcd(b, r)
if a < b:
c = b
b = a
a = c
return gcd(a, b)
for x in range(0, listLength):
num1 = lineArray[x]
num2 = lineArray[x+1]
print num1, 'and', num2
print gcd(num1, num2)
print 'end'
答案 0 :(得分:0)
非常简单。 lineArray
不是包含整数但包含字符串的列表。
所以当你这样做时:
r = a%b
它尝试格式化字符串a
,而不是计算a%b
。
要解决此问题,请将a
和b
转换为整数:
def gcd(a, b):
a,b = int(a),int(b)
c = 0
if a > b:
r = a%b
if r == 0:
return b
else:
return gcd(b, r)
if a < b:
c = b
b = a
a = c
return gcd(a, b)
此外,在gcd
函数中,递归永远不会结束。提示:您必须检查b是否为0。
希望这有帮助!