2013-11-21 6 views
-2

Программа должна использовать список из 10-й длины для подсчета вхождений 10 цифр 0-9.Программа должна подсчитывать количество вхождений каждого номера в каждой строке

Он должен печатать, как это:

Я не знаю, как заставить его сложить вхождений каждого числа каждый раз, когда он читает строку. Или как получить итоговые суммы в список.

Number of 0's:  5 
Number of 1's:  8 
Number of 2's:  17 

def main(): 
    intro() 
    inFile = getFile() 
    file, outfile = convertName(inFile) 
    count, counts = countLines(file, outfile) 
    printResults(count, counts) 

def intro(): 
    print() 
    print("Program to count letters in each line") 
    print("in a file.") 
    print("You will enter the name of a file.") 
    print("The program will create an output file.") 
    print("Written by --------.") 
    print() 
def getFile(): 
    inFile = input("Enter the name of input file: ") 
    return inFile 
def convertName(inFile): 
    file = open(inFile, "r") 
    outfile = (inFile.replace(".txt", ".out")) 
    return file, outfile 
def countLines(file, outfile): 
    outfile = open(outfile, "w") 
    count = 0 
    num = 0 
    numcount1 = [] 
    numcount = [] 
    for line in file: 
     spl = line.split(" ") 
     listx = list(spl) 
     counts = {} 
     for i in range(0, 10): 
      count[i] = count[i, 0] + str(listx.count(i)) 
     for spl in line: 

      if spl.isalnum(): 
       num = num + 1 
      else: 
       num = num + 0 

     pr = str(num)+":  "+line+"\n" 
     outfile.write(pr) 
     count = count + 1 
    return count, counts 
def printResults(count, counts): 
    print(count, counts) 
main() 
+1

вы возражаете делиться с нами делать, что проблема? – thefourtheye

+2

Stack Overflow не является отладчиком. –

+0

Как выглядит вывод? Кроме того, где находится тело вашего основного метода? –

ответ

2
def countLines(file, outfile): 
    s = file.read() 
    result = [s.count(str(i)) for i in range(10)] 
    ... 

Более эффективное сканирование s только один раз (но немного больше кода)

def countLines(file, outfile): 
    s = file.read() 
    result = [0] * 10 
    for c in s: 
     if c.isdigit(): 
      result[int(c)] += 1 
    ... 
+2

Я * восхищаюсь * вашей способностью отвечать на неясные вопросы .. hahaha – aIKid

Смежные вопросы