我试图将列表中的值设置为文件中出现的0-9。我不知道我搞砸了哪里因为在运行代码后,alist仍然是0。
def main():
intro()
inFile = getFile()
file, outfile = convertName(inFile)
alist, count = countLines(file, outfile)
printResults(alist, count, outfile)
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 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")
alist = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
count = 0
for line in file:
count = count + 1
spl = line.split()
for i in range(0,10):
for ch in spl:
if ch == i:
alist[i] = alist[i+1]
return alist, count
def printResults(alist, count, outfile):
print("The name of output file is", outfile)
print()
print("Number of lines: ", count)
t = 0
print(alist)
main()
答案 0 :(得分:1)
在:
alist[i] = alist[i+1]
您要将元素0分配给alist[i]
。您可能想要执行以下操作:
alist[i] += 1
答案 1 :(得分:1)
for i in range(0,10):
for ch in spl:
if ch.isdigit() and int(ch) == i:
alist[i] += 1
答案 2 :(得分:0)
如果您只想要这些计数(不计算数字),请使用collections.Counter
from collections import Counter
def count_digits(file_name):
with open(fn):
c = Counter([int(character) for character in open(fn).read() if character.isdigit()])
return [c.get(i,0) for i in range(10)]
如果你还想要行数,请稍微扩展一下方法:
from collections import Counter
def count_digits(file_name):
with open(fn) as fh:
c = Counter([int(character) for character in fh.read() if character.isdigit()])
digit_counts = [c.get(i,0) for i in range(10)]
fh.seek(0)
lines_count = sum(1 for line in fh)
return digit_counts, line_counts