A voir également:
- Aide random
- Random wow ✓ - Forum Jeux vidéo
- Random c entre 0 et 1 ✓ - Forum C
- Fonction random c++ ✓ - Forum C++
- Rom pokemon random - Forum DS
- C# random ✓ - Forum C#
2 réponses
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
Modifié le 29 oct. 2019 à 10:56
Modifié le 29 oct. 2019 à 10:56
bonjour,
pourquoi devrait-il te donner 10 modifications?
as-tu, dans difference, imprimé seq1, seq2 et count?
où est définie la fonction randseq?
pourquoi devrait-il te donner 10 modifications?
as-tu, dans difference, imprimé seq1, seq2 et count?
où est définie la fonction randseq?
Bonjour,
J'ai mit des commentaires dans ton code, et montré ce qui ne va pas en les améliorant.
J'ai mit des commentaires dans ton code, et montré ce qui ne va pas en les améliorant.
import random def randseq(num, alpha): seq1 = [] for i in range(num): # ahbon=random.randint(0,(len(alpha)-1)) # Plutôt qu'utliser randint utilise randrange (borne d'arrêt non incluse) # ahbon = random.randrange(len(alpha)) # seq1.append(alpha[ahbon]) # Mais comme tu as besoin de tirer un élément au hasard parmi alpha # Alors choice est plus judicieuw seq1.append(random.choice(alpha)) return "".join(seq1) def difference(seq1, seq2): count = 0 # j=0 inutile # Surtout pas de -1, autrement le dernier élément ne sera pas lu # for i in range(0,len(seq1)-1): for i in range(len(seq1)): # Pas besoin de parenthèses if seq1[i] != seq2[i]: count += 1 # j=j+1 # print (count) return count # Cette fonction doit recevoir également alpha pour savoir sur quoi piocher # une valeur aléatoire def modification(seq, num_subs, alpha): # Aucun intérêt à assigner à seq2 la même chose que seq1 # seq1=seq2=list(seq) # Et plutôt que de travailler sur la liste, le travail se fait sur les indices seq_indices = list(range(len(seq))) seq_finale = list(seq) for i in range(num_subs): # Comme au-dessus on utilise choice mais sur seq_indices indice = random.choice(seq_indices) # suppression dans la liste pour ne pas le piocher 2 fois seq_indices.remove(indice) # Choix du remplacement valeur = random.choice(alpha) # Et finalement Remplacement dans la seq_finale seq_finale[indice] = valeur # ahboni=random.randint(0,(len(seq2))) # seq2[ahboni]=randseq(1,alpha) # print (seq1) # print (seq2) # C'est pas ici que tu dois retourner la différence # Ou alors j'ai pas compris ce que dois faire cette focntion # D'où l'intérêt de nommer avec un nom représentatif les fonctions # return difference(str(seq1),str(seq2)) return ''.join(seq_finale) # Sachant que l'on souhaite modifier x éléments dans n éléments # Alors on peut raccourcir cette fonction en utilisant random.sample def modification(seq, num_subs, alpha): seq_indices = random.sample(range(len(seq)), num_subs) seq_finale = list(seq) for i in seq_indices: valeur = random.choice(alpha) seq_finale[i] = valeur return ''.join(seq_finale) alpha = "ARNDBCEQZGHILKMFPSTWYV" # input peut reçcevoir une chaîne à afficher. # print("Quelle longueur") num = int(input("Quelle longueur ?\n")) seq = randseq(num,alpha) # print ("Combien de modif dans cette sequence") num_subs = int(input("Combien de modif dans cette sequence ?\n")) seq_modifiee = modification(seq, num_subs, alpha) print(seq) print(seq_modifiee) print('nombre de différences :', difference(seq, seq_modifiee))
Merci pour ta reponse ! Pour un petit nombre (60 et 12 modif, cela marche bien, merci :)
cependant il m'est demandé de faire une seq de 1000 lettre avec 100 modif, lorsque je le fais avec ton script, le nombre de modification donnée est 95 par la suite, c'est justement ça que je cherche à faire :)
En te remerciant !
cependant il m'est demandé de faire une seq de 1000 lettre avec 100 modif, lorsque je le fais avec ton script, le nombre de modification donnée est 95 par la suite, c'est justement ça que je cherche à faire :)
En te remerciant !
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
latata
30 oct. 2019 à 00:08
30 oct. 2019 à 00:08
par ailleurs, les deux programmes peuvent changer plusieurs fois la même position, il est donc normal que le nombre de changements soit supérieur au nombre compté à la fin.
imagine que tu aies 100 positions et que tu fasses 1000 modifs.
imagine que tu aies 100 positions et que tu fasses 1000 modifs.
29 oct. 2019 à 11:31
Il devrait me donner 10 modifications car dans la fonction modification je lui en demande 10, il devrait donc les detecter dans la fonction difference
C'est à dire imprimer ?
29 oct. 2019 à 11:35