Ancien Responsable Matière Couzouféroce Posted February 28, 2022 Ancien Responsable Matière Posted February 28, 2022 Salut! J'ai comme d'hab, j'ai besoin d'aide... Après maintes et maintes heures passées sur l'info, j'ai remarqué que je savais mal gérer les int(), les ord() les str() <- en gros toutes les concaténations... Ensuite, j'ai du mal à comparer l'interieur de 2 listes, par exemple si: Bonjour = [0]*9 et Salut = [0, 0, 0, 0, 0, 1, 0, 0, 0 ] comment on peut dire: ) la position 6 de la ligne, il y a un terme qui diffère de Bonjour à Salut ? Si quelqu'un peut m'expliquer et 2, et Surtout me donner un exemple pour le premier cas (je sais faire la différence entre chaines de valeurs etc, mais je galère à les utiliser, je sais pas s'il faut mettre int(liste[pos]) = salut) ou liste[pos] = int(salut)... bref c'est un exemple Mais en tout cas, merci beaucoup ! Révélation l'info c'est dur... c'est démoralisant, mais j'en suis sûr que ça va le faire pour tout les spé info (fin, spé maths avec de l'info...) Quote
Membres PassPartout_ Posted February 28, 2022 Membres Posted February 28, 2022 Révélation je fais pas info mais je t'envoie toute ma force ! Tu vas finir par y arriver tkt Couzouféroce 1 Quote
Ancien Responsable Matière Couzouféroce Posted February 28, 2022 Author Ancien Responsable Matière Posted February 28, 2022 Y'aurait pas un petit UP ? par là mdr Quote
Calimera Posted February 28, 2022 Posted February 28, 2022 Révélation imagine ceux qui ont délibérément choisi de prendre info avec de la bio En vrai je met un message pour up le sujet, je veux les mêmes explications, ça m'aiderait beaucoup (énormément même) Quote
Ancien Responsable Matière Solution bunot Posted February 28, 2022 Ancien Responsable Matière Solution Posted February 28, 2022 Il y a 6 heures, Couzouféroce a dit : j'ai remarqué que je savais mal gérer les int(), les ord() les str() Alors les ord() jsp c'est quoi mdr Il y a 7 heures, Couzouféroce a dit : Ensuite, j'ai du mal à comparer l'interieur de 2 listes, par exemple si: Bonjour = [0]*9 et Salut = [0, 0, 0, 0, 0, 1, 0, 0, 0 ] comment on peut dire: ) la position 6 de la ligne, il y a un terme qui diffère de Bonjour à Salut ? if bonjou[6] != salut[6]: c'st ça que tu veux ? sinon si tu veux savoir si y a une différence mais sans savoir où j'ai rien de mieux que ça perso: différence = False for i in range(len(salut)): if salut[i] != bonjour[i]: différence = True si les listes ont une longueur différente il faut mettre en range la longueur de la plus petite Il y a 7 heures, Couzouféroce a dit : je sais pas s'il faut mettre int(liste[pos]) = salut) ou liste[pos] = int(salut) il faut mettre liste[pos] = int(salut) Il y a 7 heures, Couzouféroce a dit : int(), les ord() les str() Et après pour ça jsp trop quoi dire... imagine t'as une entrée c'est 1 et t'as une variable x c'est "2" si tu fais x += input() ça te fera x = 21 je crois alors que si t'as x = 2 et que tu fais x += int(input()) ça te donnera 3. Après j'ai du mal à voir ton pb, t'as du mal à comprendre ce que ça signifie ou ce que t'as dans tes listes/variables ou savoir comment passer de l'un à l'autre ? Quote
Ancien Responsable Matière Couzouféroce Posted February 28, 2022 Author Ancien Responsable Matière Posted February 28, 2022 il y a 45 minutes, Calimera a dit : imagine ceux qui ont délibérément choisi de prendre info avec de la bio toutes mes condoléances il y a 40 minutes, bunot a dit : différence = False for i in range(len(salut)): if salut[i] != bonjour[i]: différence = True très très chaud il y a 41 minutes, bunot a dit : Et après pour ça jsp trop quoi dire... imagine t'as une entrée c'est 1 et t'as une variable x c'est "2" si tu fais x += input() ça te fera x = 21 je crois alors que si t'as x = 2 et que tu fais x += int(input()) ça te donnera 3. Après j'ai du mal à voir ton pb, t'as du mal à comprendre ce que ça signifie ou ce que t'as dans tes listes/variables ou savoir comment passer de l'un à l'autre ? et ça en fait c'est que j'ai vraiment du mal à comprendre pourquoi parfois je peux pas concaténer des choses, ni pourquoi, du style: Chiffre = 0 phrase = 123487432837492789347298 for pos in range(len(phrase)): ligne = phrase[pos] Chiffre += ligne[pos] pourquoi alors que pourtant, la ligne contient bien un nombre, et pas une string en tt cas merci mdr Quote
Ancien Responsable Matière bunot Posted February 28, 2022 Ancien Responsable Matière Posted February 28, 2022 il y a 55 minutes, Couzouféroce a dit : pourquoi alors que pourtant, la ligne contient bien un nombre, et pas une string Jsp d'où il sort le phrase mais si tu l'as lu ça sera un caractère et pas un nombre. Et de toute façon si c'était un nombre je vois pas comment tu pourrais faire phrase[pos] dans ce cas là. Si tu veux que chiffre soit un nombre tu pourrais faire directement comme ça je pense : Chiffre = 0 phrase = 123487432837492789347298 for pos in range(len(phrase)): chiffre += int(phrase[pos]) mais si phrase est un nombre je ne vois pas comment tu pourrais faire... Quote
Ancien Responsable Matière Couzouféroce Posted February 28, 2022 Author Ancien Responsable Matière Posted February 28, 2022 il y a 14 minutes, bunot a dit : Jsp d'où il sort le phrase mais si tu l'as lu ça sera un caractère et pas un nombre. Et de toute façon si c'était un nombre je vois pas comment tu pourrais faire phrase[pos] dans ce cas là. Si tu veux que chiffre soit un nombre tu pourrais faire directement comme ça je pense : Chiffre = 0 phrase = 123487432837492789347298 for pos in range(len(phrase)): chiffre += int(phrase[pos]) mais si phrase est un nombre je ne vois pas comment tu pourrais faire... ouais... Je pense que mon pb vient de là mais oui, la phrase c'était un exemple, c'était pour dire que quand on à une chaine de chiffre, j'arrive pas à prendre le chiffre à la position voulue, et à l'incrémenter à une variable Quote
Ancien Responsable Matière bunot Posted February 28, 2022 Ancien Responsable Matière Posted February 28, 2022 il y a 7 minutes, Couzouféroce a dit : ouais... Je pense que mon pb vient de là mais oui, la phrase c'était un exemple, c'était pour dire que quand on à une chaine de chiffre, j'arrive pas à prendre le chiffre à la position voulue, et à l'incrémenter à une variable Normalement ça ça marche il y a 21 minutes, bunot a dit : Chiffre = 0 phrase = 123487432837492789347298 for pos in range(len(phrase)): chiffre += int(phrase[pos]) il y a 10 minutes, Couzouféroce a dit : j'arrive pas à prendre le chiffre à la position voulue Tu veux une position en particulier ? Sinon le phrase[pos] dans une boucle de longueur de la chaîne marche normalement pour parcourir toutes les positions. il y a 12 minutes, Couzouféroce a dit : et à l'incrémenter à une variable Et pour ça si ta variable est un nombre tu fais variable += int(...) et normalement c'est bon Quote
el_don_mart Posted February 28, 2022 Posted February 28, 2022 salut, ton problème c'est peut être que tu sais pas ce que ca représente int et str du coup Quote
Ancien Responsable Matière Couzouféroce Posted February 28, 2022 Author Ancien Responsable Matière Posted February 28, 2022 il y a 14 minutes, doc_gynéco a dit : salut, ton problème c'est peut être que tu sais pas ce que ca représente int et str du coup Jpense que mon pb c'est que je suis un peu mongol en vrai... mais je sais ce que c'est, mais j'arrive pas à voir quand on a une chaine de caractere, et quand on a un chiffre... Quote
el_don_mart Posted February 28, 2022 Posted February 28, 2022 (edited) tqt on est tous mongol un jour ou l'autre en info mais en fait dès le moment ou tu lis quelque chose en utilisant input(), ce que tu lis c'est forcément en str donc en caractères. si tu veux laisser ce que tu lis en caractère parce que t'as pas besoin d'utiliser le nombre en lui même dans un calcul ou quoi tu peux le stocker dans une fonction, mais ta fonction il faut pas que quand tu la définisses tu lui mettes 0 parce que ce 0 c'est un int (donc quand t'ajoutes le caractère str avec un nombre int it doesn't work). donc t'as deux choix : - Soit t'as juste besoin d'avoir le caractère quelconque et donc ta variable tu la définis comme --> chiffre = "", pour dire que y'a aucun caractère dans ton fonction mais que tu peux en rajouter et donc la t'auras juste ton caractère stocké dans une liste ou autre mais il sera pas considéré comme un chiffre - Soit t'as besoin d'avoir le chiffre fonctionnel que tu peux manipuler avec des calculs etc et dans ce cas tu définis ta variable --> chiffre = 0 mais tu fais int(input()) pour dire que tu prends le chiffre qui correspond au caractère que tu lis et la tu l'as comme un int et plus comme un str. Edited February 28, 2022 by doc_gynéco Quote
Ancien du Bureau Sans-Visage Posted February 28, 2022 Ancien du Bureau Posted February 28, 2022 Hello ! L'an dernier j'ai fait une fiche récap des grands principes de l'info pour mes potes qui étaient largués, elle est ultra sommaire mais peut-être qu'elle pourra vous aider si le soucis c'est les notions de base (j'ai vrmt survolé le topic donc si le soucis c'est pas du tout ça déso mdrrr) Bon courage ! fiche-info.pdf Couzouféroce and Calimera 1 1 Quote
el_don_mart Posted February 28, 2022 Posted February 28, 2022 après ord() on l'a juste vu dans un programme viteuf donc on va pas trop s'étaler dessus mais ca veut juste dire que ta lettre tu lui donnes une valeur numérique qui est déjà dans une base de données genre ord(a) = 96, ord(b) = 97 etc... si je dis pas de conneries c'est les bonnes valeurs Quote
Ancien du Bureau MrPouple Posted March 2, 2022 Ancien du Bureau Posted March 2, 2022 Salut ! Je me permets de faire un petit récap, en expérant que ça puisse en aider certains. Concernant les int(), ord() et str(). Ces trois expressions désignent en fait chacune une fonction. int(): Une fonction qui convertit un string (donc un texte, du character) en un objet de type int (un entier donc) lorsque cela est possibleord(): Une fonction qui renvoie l'équivalent ASCII d'un caractère. En gros, tu lui donnes une lettre et il te donne son numéro dans la table : https://fr.wikipedia.org/wiki/Fichier:ASCII-Table.svg . La table ASCII, c'est un truc international qui permet d'encoder les caractères (on ne peut pas stocker des lettres directement dans la mémoire d'un ordi, il faut d'abord converti ça en nombre). str(): Même principe que int(), sauf que ça convertit vers un string. Tu donnes un nombres, ça va te renvoyer le caractères correspondant. Petit point addition et tout: Dans un langage de programmation, le "+" peut vouloir dire plusieurs choses, et il ne fonctionne pas de la même manière selon les types de données (int, str, listes etc). # Examples. Si on définit que c = a + b a = 1 b = 2 # c = 3 a = "1" b = "2" #c = "12" a = ['h', 'hu', 'foo'] b = ['pa', 'ss'] #c = ['h', 'hu', 'foo', 'pa', 'ss'] Tu remarques que selon le type de données (int, string puis liste ici), la "+" n'est pas considéré de la même façon et donc tu n'effectues pas la même opération. Pour ton histoire de liste et de comparaison, plusieurs options. # Définissons deux listes a = [0, 0, 0, 0, 0, 0] b = [0, 1, 0, 0, 0, 0] # Pour savoir si les deux listes sont identiques : if a == b: print('Les listes sont identiques') else: print('Les listes ne sont pas identiques') # Pour savoir si deux listes de même longueur sont différentes, tu as plusieurs manières: # Avec une boucle # 1. On suppose que les deux listes ont la même longueur for i in range(len(a)): if a[i] == b[i]: print('La valeur d\' index {} diffère entre les deux listes'.format(i)) # Le .format et les accolades sont une façon d'intégrer des variables dans une string # 2. La "bonne version" avec une boucle. for i, (element_a, element_b) in enumerate(zip(a, b)): if element_a != element_b: print('A et B sont différents à l\'emplacement {}'.format(i) ''' La diférence ici c'est que tu fais une boucle for avec les élements de la liste. En python c'est une possibilité que tu as. Si tu fais "for i in qqchose" et que ce qqchose est ce que l'on appelle un iterable (une liste, un array, un générateur, un string, ...), à chaque boucle, i prendra la valeur de l'élément de qqchose. Tu peux aussi le faire comme ça si tu t'en fiches d'avoir l'emplacement :"''' for element_a, element_b in zip(a, b): if element_a != element_b: print("Les listes sont différentes") # Ensuite si tu travailles avec des listes de nombre u peux aussi imaginer faire la différence des deux listes emplacement par emplacement. # La ou ce n'est pas égal à 0, tu as une diff. L'avantage d'une méthode comme ça est que tu n'utilises pas de boucle, # c'est donc bien plus rapide. # zip() te permet de boucler sur deux iterables à la fois si ils ont la même longueurs # enumerate() renvoie à la fois l'element de l'iterable mais aussi son index. C'est une fonction extremement pratique de python Petit point sur les opérateurs de conditions, surtout le signe "=": # Pour déclarer une variable a = 1 # Un seul égal # Pour tester si la valeur de deux objets est la même a == b # Deux égals # Pour tester si deux objets ont la même valeur et le même type a === b # Trois égals Voilà, en espérant que ça clarifie un peu, n'hésite pas à poser des questions si il y a une commande que tu ne comprends pas ! Au plaisir, mitochondrie31, bunot, Naëlatence and 3 others 4 1 1 Quote
Ancien Responsable Matière Couzouféroce Posted March 2, 2022 Author Ancien Responsable Matière Posted March 2, 2022 c'est génial merci! En toute honnêteté, je croise les doigts pour ne pas avoir a utiliser des .format etc... cela me parait loin déjà que je suis un peu submergé par cette matière Quote
Ancien Responsable Matière bunot Posted March 2, 2022 Ancien Responsable Matière Posted March 2, 2022 il y a 37 minutes, MrPouple a dit : print('A et B sont différents à l\'emplacement {}'.format(i) Effectivement @Couzouféroce on ne risque pas de devoir faire ça mais je pense que tu peux faire comme ça : sortie = "A et B sont différents à l'emplacement " + str(i) print(sortie) Couzouféroce 1 Quote
Ancien du Bureau MrPouple Posted March 2, 2022 Ancien du Bureau Posted March 2, 2022 Il y a 19 heures, Couzouféroce a dit : c'est génial merci! En toute honnêteté, je croise les doigts pour ne pas avoir a utiliser des .format etc... cela me parait loin déjà que je suis un peu submergé par cette matière Non en effet ne t'inquiète pas pour ça. C'est juste une habitude personnelle ;) Tu peux faire comme l'a suggéré @bunot. Encore plus simple cependant a = 5 print('Ceci est le début de la phrase:', a) Tu peux ajouter autant d'arguments que tu veux à la fonction print, elle les convertira en string et les placera les uns à la suite des autres. Quelque chose comme ça est donc possible b = 2 print('Ceci', 4, b, 'est un test', ':', '?') Et ça t'affichera : Ceci 4 2 est un test : ? Tu peux même changer le fait que par défaut il met un espace en ajoutant ce que l'on appelle un argument optionnel b = 2 print('Ceci', 4, b, 'est un test', ':', '?', sep='-') Ca t'affichera Ceci-4-5-est un test-:-? Ce n'est pas du tout à savoir mais c'est toujours bien de voir ce qu'il est possible de faire ! ;) Au plaisir, bunot and Couzouféroce 2 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.