Partage
  • Partager sur Facebook
  • Partager sur Twitter

SyntaxError: can't assign to literal

Ne comprends pas

    18 février 2016 à 20:34:38

    Bonsoir,

    Ceci est le premier script que je tente de faire avec mes maigres ressources en Python. Il est largement perfectible mais je veux avant tout comprendre comment la magie fonctionne. Certaines de mes méthodes sont peu recommandé mais tellement plus simple pour un débutant à assimiler.

    J'ai 4 listes où se trouvent des valeurs que je souhaite passer en argument dans une simple fonction. Mais plutot que de réecrire la fonction je ne sais combien de fois, j'aimerais remplacer les "%s" par les élèments de la liste afin de n'avoir à n'écrire qu'une seule fois la fonction.

    J'ai volontairement enlevé une grosse partie du code que j'ai car c'est juste sur cette partie que je bute. J'arrive à faire fonctionner le script mais si je ne fais pas ca je dois recopier 4 000 lignes de code pour quasiment rien à modifier, et je sais que je peux eviter de le faire. Raison pour laquelle je demande de l'aide.

    Dans cette fonction, je souhaite :

    --> Tester les valeurs de la liste index 18 fois chacunes ( c'est à dire une fois par table)

    --> Il faut donc modifier la valeur table 18 fois pour une seul valeur de index

    --> Il faut que la liste appelée les_listes est une itération exactement similaire avec

    --> Il faut que l'indice liste_datas_to_test (ne change pas pendant les 18 itérations de la liste les_tables et de la liste les_listes

    for les_index in ['nc0','nc1','nc2','nc3','nc4','nc5']:
        print "%s" % index
    
    for les_tables in['table1','table2','table3','table4','table5','table6','table7','table8','table9','table11','table12','table13','table14','table15','table16','table17','table18','table19']:
        print "%s" % les_tables
    
    for les_listes in ['l0','l1','l2','l3','l4','l5','l6','l7','l8','l9','l11','l12','l13','l14','l15','l16','l17','l18']:
        print "%s" % les_listes
    
    for liste_datas_to_test in ['ncnjjlmlg','ncnjjlmlw','ncnjjlmlwin','ncjlmlg','ncjlmlgw','ncjlmlgwin']:
        print "%s" % liste_datas_to_test
    
    ###Jusque là tout va bien ###
    
    
    "%s" = list(range("%s")) % (les_listes,les_index)
    for i, element in enumerate("%s") % les_listes :
        "%s"[i] = int("%s"["%s"[i]]) % (les_listes,les_tables,liste_datas_to_test)
    
    
    print ("La table logique de " + str("%s") + " est " + str(sum("%s"))) % (liste_datas_to_test,les_listes)


    SyntaxError: can't assign to literal

    Pour une meilleur compréhension, je souhaite obtenir :

    l0 = list(range(nc0))
    for i, element in enumerate(l0) :
        l0[i] = int(table1[liste_datas_to_test[0][i]])
    
    l1 = list(range(nc0))
    for i, element in enumerate(l1) :
        l1[i] = int(table2[liste_datas_to_test[0][i]])

    Pendant 18 tables... et après une fonction permettrait de recommencer toutes ces itérations en prenant les indices (n+1) des listes  : liste_datas_to_test et les_index

     
    
    l0 = list(range(nc1))
    for i, element in enumerate(l0) :
        l0[i] = int(table1[liste_datas_to_test[1][i]])
    
    l1 = list(range(nc1))
    for i, element in enumerate(l1) :
        l1[i] = int(table2[liste_datas_to_test[1][i]])


    Bref, je n'arrive pas à faire une itération de 2 listes pendant 18 tours tout en laissant 2 indices de liste statiques.

    J'ai d'ailleurs découvert .format() mais je n'arrive pas à l'utiliser correctement.

    Pourriez-vous m'aider je vous prie ?

    Je ne sais pas si j'arrive à me faire correctement comprendre.

    Merci de votre patience.

    Et merci à OpenClassrooms qui m'a bien aider à avancer.

    Cordialement

    -
    Edité par MaximeNono 18 février 2016 à 20:36:02

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2016 à 20:42:57

      Hmmm un premier script 4000 lignes ?
      Voyons pour débuter, respectez les consignes du forum.
      Mettez votre code entre balises ça permet de voir correctement votre code
      "Plutôt que de réécrire la fonction plusieurs fois"......... Juste comme ça les boucles devraient être une solution.
      Bref mettez tout votre code bien balise...regardez sur les autres post pour voir la différence. Après de l'aide vous aurez sûrement
      @+
      • Partager sur Facebook
      • Partager sur Twitter
      http://sinclair.recreatedzxspectrum.com/index.php
        18 février 2016 à 20:46:56

        Lorsque j'ai vu mon erreur j'ai immediatement modifié la chose.

        Je l'avais même fait avant votre post, mais l'on ne rafraichit pas sa page toutes les 30 secondes je dois l'admettre.

        Un premier script de 4000 lignes car comme evoqué, je n'arrive pas à maitriser les boucles avec autant de parametres, donc soit je modifie ces variables a la mano ou soit je trouve une solution plus elegante au niveau du code..

        Faire les exercices de boucles que l'on retrouve sur les ouvrages oui, c'est assez simple en somme.. mais avec toutes ces variables pour ce que je veux faire, j'ai vraiment du mal.

        Merci en tout cas d'avoir pris le temps de me répondre.

        Cordialement,

        -
        Edité par MaximeNono 18 février 2016 à 20:48:19

        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2016 à 21:33:08

          Je n'ai pas compris grand chose à ce que tu essaies de faire, peut-être serait-il préférable de nous parler du problème initial que tu cherches à résoudre ?

          En tout cas, tu n'arriveras à rien avec tes tentatives actuelles : comme l'erreur l'indique, il est impossible d'assigner quoi que ce soit à une expression littérale ('abc' = ... par exemple).

          Peut-être cherches-tu à réaliser des boucles imbriquées, je ne sais pas bien.

          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2016 à 7:34:26

            Bonjour maxime ,
            Balance ton code entier moi non plus j'ai du mal à te suivre et pas chevronné non plus. Perso suis la pour aider et apprendre de plus ici sur ce forum les gens sont sympa et pas la grosse tête comme j'ai vu un temps sur le forum du C . 
            Difficile de te répondre aussi si tu ne nous dit pas ou tu en ai par exemple de la lecture du cours du site pour avoir une base de repéré ....
            Ça eviterais par exemple de te dire à raison ou pas : si t'as moulte variable utilisé une liste ?
            Bon courage @+
            • Partager sur Facebook
            • Partager sur Twitter
            http://sinclair.recreatedzxspectrum.com/index.php

            SyntaxError: can't assign to literal

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown