嗨,我有一些功课,我得到了。我有一个用几行写的文本文件中的数字列表。我的项目要求我选择一个特定的行,然后选择一些行来总结它们。例如,从第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 :(得分: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并返回一个包含行号(从零开始)的元组以及该行中的任何内容。您需要做的就是检查我是否等于或大于您想要读取的行,并且还要小于您想要读取的行。
希望有所帮助:)
答案 1 :(得分:0)
要从指定行执行所有行(包括给定行)的总和,行变量需要减去1.如果它不包含该行,则只需按原样使用变量。使用...打开文件,使其自动关闭,并选择读取(&#39; r&#39;)作为模式。创建一个变量来存储行并选择readlines()。这会将每一行存储到列表中的各自位置。
创建另一个变量来实际对行进行求和。使用与您关联的while循环给定起始行变量,只要它小于列表的长度,迭代列表将每行添加到sum变量(如使用nums所示)。
由于open()读取行的方式,它将所有内容作为字符串拉出来,最后是\ n。添加条带(&#39; \ n&#39;)以删除\ 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
如果您只想在给定的行后面执行一定数量的行,请将此额外数字添加到函数中,然后将行变量添加到此额外变量BEFORE从行变量中减去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.