Jump to content

Informatique...


Couzouféroce
Go to solution Solved by bunot,

Recommended Posts

  • Ancien Responsable Matière

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...)

 

Link to comment
Share on other sites

  • Ancien Responsable Matière
  • Solution
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 ?

Link to comment
Share on other sites

  • Ancien Responsable Matière
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

Link to comment
Share on other sites

  • Ancien Responsable Matière
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...

Link to comment
Share on other sites

  • Ancien Responsable Matière
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

Link to comment
Share on other sites

  • Ancien Responsable Matière
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

Link to comment
Share on other sites

  • Ancien Responsable Matière
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...

Link to comment
Share on other sites

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 by doc_gynéco
Link to comment
Share on other sites

  • Ancien du Bureau

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Ancien du Bureau

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 possible
ord(): 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, 

Link to comment
Share on other sites

  • Ancien Responsable Matière

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

 

Link to comment
Share on other sites

  • Ancien Responsable Matière
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)

Link to comment
Share on other sites

  • Ancien du Bureau
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, 

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...