IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Du C au Python


Sujet :

Python

  1. #1
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Points : 147
    Points
    147
    Par défaut Du C au Python
    Bonjour j'essaie de réaliser l'algorithme Apostolico-Giancarlo pour la recherche d'un mot dans une chaine de caractère mais j'ai du mal a transcrire cette ligne écrite en C vers le language Python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    memcpy(skip, skip + shift, (m - shift)*sizeof(int));
          memset(skip + m - shift, 0, shift*sizeof(int));
    skip est un tableau donc une liste en python
    shift est un entier
    pour le memset j'ai fait cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    skip[m-shift:shift]=[0]*shift
    mais pour le memcpy j'avoue que je sèche

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    si je m'en réfère à ça:

    http://www.cplusplus.com/reference/c...string/memcpy/

    je dirais que l'équivalent python du code est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    str1="Sample string"
    str2=''.join(str1) #str2 est une copy de str1 à une autre adresse mémoire
    #str2=str1 dans ce cas là, str2 et str1 pointent vers la même adresse mémoire.
    str3="copy successful"[0:16]
    print "str1: %s\nstr2: %s\nstr3: %s\n" % (str1,str2,str3)
    et pour http://www.cplusplus.com/reference/c...string/memset/

    il n'est à mon sens pas possible de faire un équivalent python car les chaines sont des objets non mutables en python.

    tu peux uniquement t'en sortir avec une copie (et ce n'est plus le même emplacement mémoire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    str1 = "almost every programmer should know memset!"
    print id(str1)
    str1 = '-'*6 + str1[6:]
    print id(str1) #l'adresse mémoire a changé
    print str1
    Je ne sais pas qu'elle est l'utilité de ceci pour toi, mais c'est en général une mauvaise façon de s'y prendre que de chercher une traduction "littérale" d'un langage vers un autre. je pense qu'il vaut mieux penser python que chercher à traduire mot à mot du c++

    par exemple pour memset, ce n'est pas possible.

    La recherche de chaine dans une chaine se fait comme ceci en python:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str1.find('very') #retourne 8
    print str1[8:] # retourne 'very programmer should know memset!'
    mais tu ne maitrises plus l'algorithme de recherche

  3. #3
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Points : 147
    Points
    147
    Par défaut
    Merci pour ta réponse mais en fait mon problème venait plus d'une incompréhension de l'algorithme Apostolico-Giancarlo.
    j'ai mis cette ligne à la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    skip[m-shift:shift]=[0]*shift
    et l'algo marche.

    D'un point de vue générale je suis d'accord avec toi, il vaut mieux en python plutot que de faire de la traduction, mais je suis pris par le temps et mon but et uniquement de comparer des algo de recherche de mots dans un texte et d'étudier leur complexité.

Discussions similaires

  1. [langage] traduction d'un fonction python en perl
    Par ay_pepito dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2007, 15h06
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo