2012-04-09 69 views
1
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重复 - 得到这个错误:类型错误:不支持的操作数类型(S)为+:“诠释”和“海峡”努力“打印”

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' 

我无法弄清楚如何修正这个错误,请帮助

回答

2

你不能一个字符串('\'s in a row at character position')添加了许多number为数字内插成字符串的正确方法是使用string formatting不是加法:

print "Found {0} {1}'s in a row at character position {3}".format(max(longrepeats), number, strToSearch.index(number * max(longrepeats))) 
+0

如果OP实际上希望数字是一个整数,这是一个比我更好的答案,但我非常肯定,首先将int转换为int是不必要的。这就是说,即使没有投射到int一些不错的格式仍然会更好。 – 2012-04-09 01:46:38

+0

@NolenRoyalty正确的,即使他想插入字符串到字符串,他仍然应该使用字符串格式。 – agf 2012-04-09 01:49:41

+0

感谢您的快速回复,我会尝试一下。我刚刚发布了输出,因此您可以更好地了解此代码假设要生成的内容。 – 2012-04-09 02:10:00

相关问题