Comment pourrais je faire ça sous Linux ? [traitement de nombres] - Divers - Programmation
Marsh Posté le 03-02-2004 à 19:37:15
bon je dirais pour des calculs mathematique le Fortran est ce qu'il y a de mieux, mais bon pas top , avec du Perl tu devrais t'en sortir
Marsh Posté le 03-02-2004 à 19:39:13
et c'est pas trop compliqué à apprendre le perl ? tu aurais des bons liens ?
HS : au fait, tu t'en es sortie avec ton DHCP ?
Marsh Posté le 03-02-2004 à 19:45:43
Mjules a écrit : et c'est pas trop compliqué à apprendre le perl ? tu aurais des bons liens ? |
Pour Perl : http://forum.hardware.fr/forum2.ph [...] 097&cat=10
compliqué... la syntaxe est un peu special mais c'est pas trop compliqué, maintenant la plupart de langages te permette de faire ce que tu veux, je prends Perl parce que je le connais un peu
HS: pas encore verifier vu que j'ai pas la machine sous la main, mais je teste et je réup le sujet
Marsh Posté le 03-02-2004 à 20:53:35
Salut, je comprends pas trop
Tu as des fichiers texte contenant 2 colonnes de nombres, la première colonne réprésente des angles en dégré, et la deuxième, on s'en fiche ?
C'est "angle_initial" que l'on doit remplacer dans ta formule ?
@+
Marsh Posté le 03-02-2004 à 21:31:46
Bon, je viens de me mettre au python y'a 10 minutes
Pour un fichier essai.tmp de cette forme :
|
Et un script python qui ressemble à çà (indulgence demandé)
Code :
|
J'obtiens la sortie suivante :
|
Ca à l'air pas trop mal, à moins que je réponde à coté de la plaque
Enfin tout ca pour te dire que ca semble pas extremement complexe, d'autant plus que la doc python est super bien faite !
@++
Marsh Posté le 03-02-2004 à 21:33:34
c'est vrai que Python est peut être plus lisible et facile d'acces maintenant que tu en parles
Marsh Posté le 03-02-2004 à 21:36:55
Evadream -jbd- a écrit : Salut, je comprends pas trop |
oui exactement
Marsh Posté le 03-02-2004 à 21:40:03
Evadream -jbd- a écrit : Bon, je viens de me mettre au python y'a 10 minutes
|
ouaouh !
c'est ça qu'il me faut sauf que moi je veux avoir en sortie un fichier avec colonne1 modifié et colonne2 intact.
bon je vais regarder python
Merci
Marsh Posté le 03-02-2004 à 21:46:37
Mjules a écrit : |
C'est cool
Si tu veux pas te prendre la tete, tu remplaces :
|
Par
|
Et tu fais :
|
et hop
Marsh Posté le 03-02-2004 à 21:56:43
Evadream -jbd- a écrit :
|
La grande classe
Merci 1000 fois
Marsh Posté le 03-02-2004 à 22:46:32
fichier = open('essai.tmp','r')
a = 1.9
b = 2.47
# on lit tout le fichier qu'on place dans lignes, ligne par ligne
lignes = fichier.readlines()
# on lit ligne par ligne
t'emmerdes pas
for ligne in open('fichier'):
# ...
Marsh Posté le 03-02-2004 à 22:48:48
ReplyMarsh Posté le 03-02-2004 à 22:52:38
juste une réflexion
le % prends en argument droit un tuple. python fait automatiquement de packing, unpacking
comme dans
f, = sequence
ou
pair = first, second
donc "..." % arg fonctionne
seulement, je pense que ce n'est pas une bonne habitude, et ça peut se révéler problématique si arg est lui même un tuple
donc je recommande d'écrire
"..." % (arg,)
Marsh Posté le 03-02-2004 à 22:55:00
Je note ! Merci pour cette remarque
Marsh Posté le 03-02-2004 à 22:56:59
eih j'espère que t'as surtout compris que pas besoin de fermer explicitement les fichiers en python, ça se fait tout seul à la destruction (plus de références sur les descripteur de fichiers)
Marsh Posté le 03-02-2004 à 23:01:54
Ta remarque s'applique même lorsque qu'on fait un fichier = open('monnom'), ou bien c'était pour appuyer ta remarque précédente où le open se faisait dans le for ?
Marsh Posté le 03-02-2004 à 23:04:00
oui. en règle générale, ne prends pas la peine de fermer un fichier. le seul cas ou tu le fermes explicitement, c'est quand tu veux faire une autre opération (réouverture dans un autre mode, suppression, déplacement, renommage, etc) afin d'assurer la cohérence
Marsh Posté le 03-02-2004 à 23:19:36
taz a écrit : juste une réflexion |
Rapidement :
http://www.python.org/doc/current/tut/node9.html
String and Unicode objects have one unique built-in operation: the % operator (modulo). This is also known as the string formatting or interpolation operator. Given format % values (where format is a string or Unicode object), % conversion specifications in format are replaced with zero or more elements of values. The effect is similar to the using sprintf() in the C language. If format is a Unicode object, or if any of the objects being converted using the %s conversion are Unicode objects, the result will also be a Unicode object.
If format requires a single argument, values may be a single non-tuple object. 2.8 Otherwise, values must be a tuple with exactly the number of items specified by the format string, or a single mapping object (for example, a dictionary).
Vraiment pour l'habitude alors
Marsh Posté le 05-02-2004 à 15:25:12
Bonjour,
alors voilà, après 2 jours d'apprentissage, j'ai finalement réussi à pondre ça :
Code :
|
ça marche pas trop mal mais ya encore du boulot dessus à faire.
Merci beaucoup pour m'avoir donné les pistes et à bientôt sur la subcat python parce que je sens que je vais pas tarder à avoir besoin d'un peu d'aide
A+
Marsh Posté le 03-02-2004 à 19:27:48
Bonsoir,
voilà le pb :
j'ai plusieurs fichiers texte (codage ASCII) contenant 2 colonnes de nombres. Ce sont des fichiers décrivant des courbes de diffraction X.
Ma première colonne contient des angles en degrées.
Je cherche à appliquer cette formule sur ces angles (ça me permettra de comparer des diagrammes fait dans différents appareils) :
angle_final (en degré) = arcsin{(lambda'/lambda)*sin(angle_initial)}
j'ai commencé par faire ça avec un tableur mais je suis vite limité (entre 3500 et 6000 valeurs à chaque fois, ça devient vite lourd).
Je cherches donc un moyen d'automatiser ces opérations avec un script/programme.
L'ennui c'est que je ne sais pas quoi utiliser ; j'ai quelques notions de BASH (je suis sous linux) et j'avais pensé à awk, mais celui ci ne semble pas faire les arcsin.
je m'en remets donc à vous pour me donner des pistes ou des noms de softs ou bien des liens. Enfin bref tout ce qui pourrait m'aider.
Merci d'avance.
---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. | Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.