2013-09-26 3 views
-1

nous sommes certains élèves ingénieurs, qui doivent utiliser des éléments finis pour calculer une simulation - notre projet est de trouver tous les nœuds sur le bord de l'objet, et de les comparer à une ligne définie Nous n'avons aucune expérience de python et avons lu environ une semaine, mais sans chance, alors maintenant nous essayons d'écrire ce post. notre date brute ressemble à cepython Permet de rechercher un document texte avec des colonnes

$# eid  pid  n1  n2  n3  n4  n5  n6  n7  n8 
     1  1  1  76  77  2 
     2  1  2  77  78  3 
     3  1  3  78  79  4 
     4  1  4  79  80  5 
     5  1  5  80  81  6 
     6  1  6  81  82  7 
     7  1  7  82  83  8 
     8  1  8  83  84  9 
     9  1  9  84  85  10 
    10  1  10  85  86  11 
    11  1  11  86  87  12 
    12  1  12  87  88  13 
    13  1  13  88  89  14 
    14  1  14  89  90  15 
    15  1  15  90  91  16 
    16  1  16  91  92  17 

ce que nous devons faire est de rechercher des numéros qui se produisent 2 ou 3 fois dans la 3e-6e colonne et de les imprimer à un document de texte séparé. Ensuite, nous avons besoin de trouver les coordonnées de ces nœuds dans le même document texte, ils ressemblent à ce

4441  1 4381 4400 4529 4530 
    4442  1 4394 4393 4536 4536 
    4443  1 4393 4407 4535 4536 
*NODE (this is the end of the columns with nodes) 
$# nid    x    y    z  tc  rc 
     1   0.000   0.000  -35.0448952 
     2  1.0216124 -1.0579003e-12  -35.0447197 
     3  2.0431936   0.000  -35.0445557 
     4  3.0647054 -3.6848050e-13  -35.0442314 
     5  4.0861325   0.000  -35.0437469 
     6  5.1074324   0.000  -35.0432587 
     7  6.1286263   0.000  -35.0426292 
     8  7.1495924   0.000  -35.0419121 
     9  8.1704435 -4.7529106e-14  -35.0411606 
    10  9.1909819   0.000  -35.0402603 
    11  10.2113619   0.000  -35.0393677 

maintenant avec toutes les coordonnées de pointe, nous pouvons comparer le bord de notre simulation avec le bord requis.

Nous ne voulons pas de solution finale, puisque nous voulons apprendre à programmer en python, et nous devons être en mesure de l'expliquer à notre examen, nous espérons que quelqu'un peut nous guider vers la bonne littérature ou une base script que nous pouvons jouer avec, puisque nous n'avons rien trouvé sur ce forum, qui correspond à nos besoins

merci à l'avance

+1

Désolé, mais s'il vous plaît fournir au moins une question de programmation raisonnable. L'analyse des fichiers et la collecte des données sont simples. Quel est votre problème particulier? –

Répondre

0

Je recommande de commencer avec le python tutorial - il ne prendra pas longtemps.

Quoi qu'il en soit, je l'espère, cela devrait vous donner quelques idées sur la façon de procéder.

Nullement est-ce une solution de travail et ne font aucune vérification d'erreur, mais il devrait vous guider vers les parties du python pour apprendre.

J'utilise un dictionnaire pour compter le nombre de chaque colonne (je l'ai fait seulement colonne3 ici).

# open the file 
col3_counts = {} 
txtfile = open('txtfile', 'r') 

# reading 2 types of data from the file: the 'nodes' and the 'coordinates' 
end_of_nodes = False 

# read each line from the file 
for line in txtfile: 
    if line.startswith('*NODE'): 
     end_of_nodes = True 

    if not end_of_nodes: 
     # read the node column 
     cols = line.split() # cols[0] = eid, cols[1] = pid, .... 

     # get the value of column3 
     col3 = cols[4] 

     if col3 not in col3_counts: 
      col3_counts[col3] = 0 
     else: 
      col3_counts[col3] += 1 

    else: 
     # now read the coordinates using .split() 
     # ... 

     # determine those in column 3 with a count > 2 
     for num, count in col3_counts.items(): 
      if count > 2: 
       # do something here 

Espérons que cela aide.

+0

merci! mais lorsque je tente de le compiler à partir du terminal, cette erreur se produit: thomas @ pankpc: ~/Documents/python test.py $ python fichier "test.py", ligne 33 ^ IndentationError: prévu un bloc en retrait –

+0

voir: http://stackoverflow.com/questions/4446366/python-indentationerror-expected-an-indented-block – Richard

+0

une semaine, je suppose que tard, mais l'erreur est ici un peu subtil, le 'faire quelque chose here' ligne semble bien en retrait, mais un commentaire ne compte pas. Vous devez y mettre du code pour qu'il s'exécute, python n'autorisera pas une construction 'if' vide. Utilisez 'pass' si vous avez besoin d'un espace réservé do-nothing. – agentp

Questions connexes