2017-04-19 1 views
0

salut im ayant des problèmes avec certains devoirs que j'ai eu. J'ai une liste de nombre dans un fichier texte écrit en plusieurs lignes. mon projet me demande de sélectionner une ligne spécifique puis un numéro de ligne après pour les résumer. Par exemple à partir de la ligne 4, additionnez la ligne suivante. c'est le code que je l'ai essayé pour l'instantlire la ligne spécifique dans le texte et de faire la somme des nombres et des lignes suivantes

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) 

Répondre

0

Je vraiment obtenir ce que votre code fait mal (un peu pressé donc pas assez de temps pour analyser désolé) mais si vous êtes à la recherche d'un code qui ne sorte de ce que vous avez besoin (je pense) ici est:

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 

Juste une explication rapide, l'énumération est une fonction intégrée qui itérer le fichier f et retourner un tuple contenant le numéro de ligne (à partir de zéro) et tout ce qui est dans la ligne. Tout ce que vous devez faire est de vérifier si je suis égal ou supérieur à la ligne que vous voulez commencer à lire et aussi plus petit que la ligne que vous voulez arrêter de lire.

Hope it helps :)

+0

Merci que je tri it out –

0

Pour faire la somme de toutes les lignes (y compris la ligne donnée) de la ligne désignée, vous en ligne variable doit soustraire 1. Si elle est exclusive de cette ligne, puis il suffit d'utiliser la variable telle quelle. Ouvrez le fichier en utilisant avec ... pour le fermer automatiquement et choisissez read ('r') comme mode. Créez une variable pour stocker les lignes et choisissez readlines(). Cela stocke chaque ligne à sa place dans une liste.

Créez une autre variable pour additionner les lignes. En utilisant une boucle while associée à la variable de ligne de départ donnée, tant qu'elle est inférieure à la longueur de votre liste, parcourez la liste en ajoutant chaque ligne à votre variable sum (comme indiqué en utilisant nums). En raison de la façon dont open() lit les lignes, il les tire toutes comme des chaînes avec \ n à la fin. Ajoutez strip ('\ n') pour supprimer le \ n et convertissez le tout en entier. Ajoutez 1 à votre variable de ligne pour correctement itérer et terminer la boucle.

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 

Si vous voulez faire seulement un certain nombre de lignes suivant la ligne donnée, ajouter ce numéro supplémentaire à la fonction, puis ajouter la variable de ligne à cette variable supplémentaire avant de soustraire 1 de la variable de ligne. Au lieu d'itérer la longueur de la liste, utilisez cette variable supplémentaire modifiée lorsque vous terminez.

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 

Encore une fois, si vous ne voulez pas la ligne donnée inclus, ne pas soustraire 1.

+0

merci très utile tant –

+0

Pas de problème. J'espère que ça a aidé. Je ne suis pas sûr de ce que les problèmes étaient avec votre code, donc je ne peux pas commenter, mais vous devez utiliser "avec open (" nombres.txt "," r ") comme fichNbr:" au lieu de "fichNbr = open (" nombres.txt "," r ")" parce que votre script ne ferme jamais le fichier, mais avec ... comme il le fait. –

+0

Si l'une de ces réponses a répondu à votre question, n'oubliez pas de la marquer comme réponse. –