Addition et multiplication de vecteur [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
10 novembre 2008
-
 Utilisateur anonyme -
Bonjour,
   je debute aujourd'hui en python et je m'essaie a un petit programme de maths.
101vector est un petit projet pour le calcul vectoriel dans une dimension 'n', les coordonees de vecteurs sont aleatoires et depende de la dimension.

voici ou j'en suis, le code ne me met plus d'erreur, s'execute mais j'ai du oublier quelque chose, ca n'a pas l'air de passer par le main. :(

Voici donc mon code:
 
                           
#!/usr/bin/python

##########################
## beneva_a@epitech.net  |
##                       |
##   :: 101vector ::     |
## -----------------------

import sys,re,os,pwd,random
os.system('reset')

class calcul:
    def random(self):
        random, randint(-9,9)
        
    def addition(self, dim):
        x = 0
    # On ajoute n fois des coordonnees aleatoires 
    # dans une liste de la taille de la dimension 
        while x <= dim:
            a_list[x] = self.random
            x = x + 1
        x = 0
        while x <= dim:
            b_list[x] = self.random
            x = x + 1
        x = 0
    # On ajoute A a B
        while x <= dim:
            res_list[x] = a_list[x] + b_list[x]
            x = x + 1
    # On imprime les listes
        print "Valeur de A:     |", a_list
        print "Valeur de B:     |", b_list
        print "Valeur de A + B: |", res_list
            
    def multiplication(self, dim):
        x = 0
    # On ajoute n fois des coordonnees aleatoires
    # dans une liste de la taille de la dimension
        while x <= dim:
            a_list[x] = self.random
            x = x + 1
        x = 0
        while x <= dim:
            b_list[x] = self.random
            x = x + 1
        x = 0
    # On ajoute A a B
        while x <= dim:
            res_list[x] = a_list[x] * b_list[x]
            x = x + 1
    # On imprime les listes
        print "Valeur de A:     |", a_list
        print "Valeur de B:     |", b_list
        print "Valeur de A + B: |", res_list
    
    def help():
        print "Aide"
        print "USAGE: ./101vector [-commande] <dimension>"
        print "Liste des commandes:"
        print "     -addition           ->  addition de deux vecteurs aleatoires de dimension n"
        print "     -multiplication     ->  multiplication de deux vecteurs aleatoires de dimension n"
        print "Dimension: correspond a un nombre n"
        sys.exit()
                
    def main():
        print " ___________  ____                     __                 "
        print "/_   \   _  \/_   |__  __ ____   _____/  |_  ___________  "
        print " |   /  / \  \|   \  \/ // __ \_/ ___\   __\/  _ \_  __ \ "  
        print " |   \  \_/   \   |\   /\  ___/\  \___|  | (  <_> )  | \/ "
        print " |___|\_____  /___| \_/  \___  >\___  >__|  \____/|__|    "
        print "            \/               \/     \/                    "
        if len(sys.argv) == 1:
            print "USAGE: 101vector.py [-commande] <dimension>"
            sys.exit()
        calc = calcul()
        if '-addition' in sys.argv[1]:
            calc.addition(sys.argv[2])
        if '-multiplication' in sys.argv[1]:
            calc.multiplication(sys.argv[2])
        if '-help' in sys.argv[1]:
            help()

        if __name__ == "__main__":
            main()
                                        
                                     

<gras>.#BlaZed <!--</gras>
A voir également:

8 réponses


Non une classe est inutile en effet mais possible.

Cependant programmer en objet de suite me semble rapide. Pour démarrer vaut mieux s'habituer à trouver la solution la plus simple pour résoudre ton problème.
Celle que tu proposes me semble compliqué.

Au départ je te conseillerais de faire du calcul vectoriel seulement avec les additions et en 2 dimensions puis par la suite dans l'espace.

Bon courage
Messages postés
24
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
10 novembre 2008

Yououuu, j'ai regler un probleme!!
D'ou l'importance des tabs :)

Enfin bref, maintenant il affiche bien ce qu il faut sans argument, mais apres c'est autre chose ^^

Toujours a l'ecoute de conseil, je cherche ;)
<gras>.#BlaZed <!--</gras>

Message d'erreur?
Messages postés
24
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
10 novembre 2008

Desole  a ce moment si il n'y en avait pas, maintenant j'ai ce message.

File "./101vector.py", line 92, in <module>
    main()
  File "./101vector.py", line 85, in main
    calc.addition(sys.argv[2])
  File "./101vector.py", line 25, in addition
    self.a_list[x] = self.random
AttributeError: calcul instance has no attribute 'a_list'

Si quelqu'un pouvait me faire un petit cours sur les tableaux ca serait cool :)

Mercii

<gras>.#BlaZed <!--</gras>

Bonsoir,

Beaucoup d'erreurs, déjà s'occuper de :

def main():
        print " ___________  ____                     __                 "
        print "/_   \   _  \/_   |__  __ ____   _____/  |_  ___________  "
        print " |   /  / \  \|   \  \/ // __ \_/ ___\   __\/  _ \_  __ \ " 
        print " |   \  \_/   \   |\   /\  ___/\  \___|  | (  <_> )  | \/ "
        print " |___|\_____  /___| \_/  \___  >\___  >__|  \____/|__|    "
        print "            \/               \/     \/                    "
        if len(sys.argv) == 1:
            print "USAGE: 101vector.py [-commande] <dimension>"
            sys.exit()
        calc = calcul()
        if '-addition' in sys.argv[1]:
            calc.addition(sys.argv[2])
        if '-multiplication' in sys.argv[1]:
            calc.multiplication(sys.argv[2])
        if '-help' in sys.argv[1]:
            help()

        if __name__ == "__main__":
            main()

Transformer en :

if __name__ == "__main__":
    print " ___________  ____                     __                 "

    print "/_   \   _  \/_   |__  __ ____   _____/  |_  ___________  "

    print " |   /  / \  \|   \  \/ // __ \_/ ___\   __\/  _ \_  __ \ " 

    print " |   \  \_/   \   |\   /\  ___/\  \___|  | (  <_> )  | \/ "

    print " |___|\_____  /___| \_/  \___  >\___  >__|  \____/|__|    "

    print "            \/               \/     \/                    "

    if len(sys.argv) == 1:

        print "USAGE: 101vector.py [-commande] <dimension>"

        sys.exit()

        calc = calcul()

    if '-addition' in sys.argv[1]:

        calc.addition(sys.argv[2])

    if '-multiplication' in sys.argv[1]:

        calc.multiplication(sys.argv[2])

    if '-help' in sys.argv[1]:

        help()

Ensuite occupe toi des indentations

Pour le reste je ne comprend pas trop l'utilisation

Je me lance au cas où : python 101vector -addition 2     ????

Ou???
Messages postés
24
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
10 novembre 2008

La ligne de commande pour l'executer est: 

                ./101vector -addition 2

Cela fonctionne pour:  ./101vector.py (sans argument)   et   ./101vector.py -help

Pour le main c'est bon c'est changer, je viens de voir que j'attaque tout de suite avec une class mais est ce que c'est vraiment utile? ou de simple fonction suffirait elle?

Nouvelles erreurs:

Traceback (most recent call last):
  File "./101vector.py", line 85, in <module>
    calc.addition(sys.argv[2])
  File "./101vector.py", line 25, in addition
    self.a_list[x] = self.random
AttributeError: calcul instance has no attribute 'a_list'

Je vois ce que je peux faire :)
<gras>.#BlaZed <!--</gras>
Messages postés
24
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
10 novembre 2008

C'est vrai c'est du rapide, j'ai pris le language un peu a la legere mais j'aimerais l'approfondir.
J'ai coder ce projet en C, il est a rendre dans une ou deux semaines, j'aurais peut etre le temps de le coder en python.

Merci encore pour ton temps, je reposterais surement, merci.

<gras>.#BlaZed <!--</gras>

De rien n'hesite pas

A bientot