Python:字符串格式化和调用函数

时间:2013-10-22 23:46:20

标签: python string-formatting

因此,当尝试将参数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'

1 个答案:

答案 0 :(得分:0)

非常简单。 lineArray不是包含整数但包含字符串的列表。 所以当你这样做时:

r = a%b

它尝试格式化字符串a,而不是计算a%b。 要解决此问题,请将ab转换为整数:

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。 希望这有帮助!