2017-04-19 69 views
0

嗨即时通讯有一些家庭作业,我得到了麻烦。我有一个文本文件中的数字列表写在几行。我的项目要求我选择一条特定的线路,然后选择一些线路进行总结。例如,从第4行开始总结下一个4行。 这是我已经尝试了现在阅读文本中的特定行,然后总和数字和以下行

fichNbr = open("nombres.txt", "r") 
ligneDepart = int(input("entrer la ligne de depart: ")) 
nb_lignes = int(input("entrer le nombre de ligne a lire: ")) 
somme3 = 0 
for line in fichNbr: 
    line = fichNbr.readline() 
    print(line) 
    for i in range(ligneDepart,(ligneDepart + nb_lignes),1): 
     n = fichNbr.readline().split() 
     for f in n: 
       somme3 += int(f) 
print(somme3) 

回答

0

的代码我真的不得到什么你的代码是做错了(有点匆忙所以没有足够的时间来分析对不起),但如果你正在寻找一个代码那种做了你需要的东西(我认为)这就是:

f = open("test.txt", "r") 
start_line = input("line to start ") - 1 
finish_line = input("line to finish ") - 1 
soma = 0 
for i, line in enumerate(f): 
    if i >= start_line and i <= finish_line: 
     soma += int(line) 
print soma 

只是一个快速的解释,枚举是一个内置的功能,将通过文件f迭代,并返回一个包含行号的元组(从零开始)以及行中的任何内容。你所需要做的就是检查我是否等于或大于你想要开始阅读的行,也比你想要停止阅读的行更小。

希望它能帮助:)

+0

谢谢你,我会至三出来 –

0

要做到从指定行所有行(包括定行)的总和,你行变量需要减去1.如果是独占该行然后只使用按原样变化。使用...打开文件以使其自动关闭并选择读取('r')作为模式。创建一个变量来存储这些行并选择readlines()。这将每行存储在列表中自己的位置。

创建另一个变量来实际地总和这些行。使用一个while循环与给定的起始行变量相关联,只要它小于列表的长度,遍历列表并将每行添加到sum变量(如使用nums所示)。

由于open()是如何读取行的,因此它会在\ end中将其全部作为字符串进行抽取。添加条('\ n')以删除\ n并将其全部转换为整数。将1添加到行变量中,以正确迭代并结束循环。

def example(file_name, line): 
    with open(file_name, 'r') as f: 
     x = f.readlines() 
    line = line - 1 
    nums = 0 
    while line < len(x): 
     nums += int(x[line].strip('\n')) 
     line += 1 
    print(nums) 

example("example.txt", 4) 
# My example.txt file has a different number on each line in this order: 2, 4, 3, 7, 5, 6, 4 

如果你想要做的只是下面给定行一定数量的线条,添加此额外数量的功能,然后行变量添加到这个额外的变量之前从行变量中减去1。而不是迭代列表的长度,在你结束时使用这个修改的额外变量。

def example(file_name, line, end_line): 
    with open(file_name, 'r') as f: 
     x = f.readlines() 
    end_line += line 
    line = line - 1 
    nums = 0 
    while line < end_line: 
     nums += int(x[line].strip('\n')) 
     line += 1 
    print(nums) 

example("example.txt", 4, 2) 
# My example.txt file has a different number on each line in this order: 2, 4, 3, 7, 5, 6, 4 

同样,如果你不想包含给定的线,就不要减1

+0

非常有帮助感谢这么多 –

+0

没问题。希望它有帮助。我不确定你的代码有什么问题,所以我不能评论它,但是你应该使用“open(”nombres.txt“,”r“)作为fichNbr:”而不是“fichNbr = open(” nombres.txt“,”r“)”,因为你的脚本从来没有关闭过这个文件,但是......和它一样。 –

+0

如果其中一个回答回答了您的问题,请记住将其标记为已回答。 –