0
def findLongRepeats(strToSearch):
"""Search strTosearch to find the first location of longest repeated string 
of a single digit e.g '1111'. Do this for each digit from 0 to 9"""
numbers = ['0','1','2','3','4','5','6','7','8','9']
for number in numbers: #reads a number line one at time
    number_count = 0 #sets the count to 0
    number = int(number)
    longrepeats = []  #creates a new list
    for x in strToSearch: #reads each digit one by one
        if x == number: #if x is true it will add 1 to the number count
            number_count += 1
        if x != number: # if x is not flase it will add number count into the long repeat list
            longrepeats.append(number_count)
            number_count = 0
    print "Found", max(longrepeats), number+'\'s in a row at character position', strToSearch.index(number*max(longrepeats))

def main():
    """DocT"""
    File = open("pidigits.txt","rU") #opens file for reading
    Thousand_String = 0
    strLine =''
    for line in File: #reads each line
        line = line.strip()
        if '3.' in line:
            line = line.replace('3.','')
        Thousand_String += len(line)
        strLine += str(line)
        #print line
    #File.close()



    print
    print "Number of pi digits to process:",Thousand_String
    print
    findLongRepeats(strLine)
    print line
main()

“当我运行 findLong Repeats 函数时 - 出现此错误:

File "PA5_.py", line 53, in main
    findLongRepeats(strLine)
  **File "PA5_.py", line 18, in findLongRepeats
    print "Found", max(longrepeats), number+'\'s in a row at character position', strToSearch.index(number*max(longrepeats))
TypeError: unsupported operand type(s) for +: 'int' and 'str'

我无法弄清楚如何修复错误,请帮助。

4

2 回答 2

2

您不能将字符串 ( '\'s in a row at character position') 添加到数字number。将数字插入字符串的正确方法是使用字符串格式而不是加法:

print "Found {0} {1}'s in a row at character position {3}".format(max(longrepeats), number, strToSearch.index(number * max(longrepeats)))
于 2012-04-09T01:44:14.693 回答
0

正确的方法是使用上面提到的字符串格式,这里是文档:http ://docs.python.org/library/string.html#formatstrings

解决这个问题的另一种简单方法是不使用“+”添加,而是独立打印以逗号分隔的 int 和 string 变量:

print "Found", max(longrepeats), number,'\'s in a row at character position', strToSearch.index(number*max(longrepeats))
于 2020-05-10T10:27:57.757 回答