2017-04-19 62 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

如果其中一個回答回答了您的問題,請記住將其標記爲已回答。 –