If avec nombre superieur, inferieur ou egal

Résolu
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - 13 févr. 2024 à 12:17
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - 13 févr. 2024 à 14:59

Bonjour,

Je n'arrive pas a m'en sortir avec if

#!/usr/bin/python3
# -*- coding:utf-8 -*-

liste_des_fichiers_avec_chemin = ['/home/serveur/Vidéos/Films/Arthur-et-les-Minimoys_2006_TrueFrench-HDLight-1080p-x264.mkv', '/home/serveur/Vidéos/Films/Cosmic-Sin-2021-MULTi-VFI-2160p-10bit-4KLight-HDR10PLUS-BluRayAC35.1-x265-QTZ.mkv', '/home/serveur/Vidéos/Films/Chair de poule 2015 1080p FR EN X264 AC3-mHDgz.mkv']


def fonction_if(nb):
    print()
    print ("nb : ", nb)
    print ()
    
    nb_elements = len(liste_des_fichiers_avec_chemin)
    print ("nb_elements : ",nb_elements)

    if nb < "0":
        print ("contient une valeur négative")
    elif nb < str(nb_elements):
        print (nb+" est inferieur au nombre de la liste qui contient "+str(nb_elements)+" elements - envoyé : "+nb+" - liste : "+str(nb_elements))
    elif nb > str(nb_elements):
        print (nb+" est superieur au nombre de la liste qui contient ",str(nb_elements)+" elements - envoyé : "+nb+" - liste : "+str(nb_elements))
    elif nb == str(nb_elements):
        print (nb+" est égal au nombre de la liste qui contient ",str(nb_elements)+" elements - envoyé : "+nb+" - liste : "+str(nb_elements))


print ()    
nb = input("Enter un nombre entre 0 et 100 : ")
print(nb)    
fonction_if(nb)

Qand je tape 0

serveur@RPI-5:~ $ python3 /home/serveur/Langages/python/3/videos2/if.py

Enter un nombre entre 0 et 100 : 0
0

fonction_if
-----------
nb :  0

nb_elements :  3
0 est inferieur au nombre de la liste qui contient 3 elements - envoyé : 0 - liste : 3
serveur@RPI-5:~ $ 

au lieu de reponde  "contient une valeur négative"

Quand je tape 2

serveur@RPI-5:~ $ python3 /home/serveur/Langages/python/3/videos2/if.py

Enter un nombre entre 0 et 100 : 2
2

fonction_if
-----------
nb :  2

nb_elements :  3
2 est inferieur au nombre de la liste qui contient 3 elements - envoyé : 2 - liste : 3
serveur@RPI-5:~ $

la c'est ok

Quand je tape 3

serveur@RPI-5:~ $ python3 /home/serveur/Langages/python/3/videos2/if.py

Enter un nombre entre 0 et 100 : 3
3

fonction_if
-----------
nb :  3

nb_elements :  3
Contient une valeur égal à 3 - envoyé : 3
3 est égal au nombre de la liste qui contient  3 elements - envoyé : 3 - liste : 3
serveur@RPI-5:~ $

la c'est ok

Quand je tape 5

serveur@RPI-5:~ $ python3 /home/serveur/Langages/python/3/videos2/if.py

Enter un nombre entre 0 et 100 : 5
5

fonction_if
-----------
nb :  5

nb_elements :  3
5 est superieur au nombre de la liste qui contient  3 elements - envoyé : 5 - liste : 3
serveur@RPI-5:~ $

La c'est ok

Quand je tape 10

serveur@RPI-5:~ $ python3 /home/serveur/Langages/python/3/videos2/if.py

Enter un nombre entre 0 et 100 : 10
10

fonction_if
-----------
nb :  10

nb_elements :  3
10 est inferieur au nombre de la liste qui contient 3 elements - envoyé : 10 - liste : 3
serveur@RPI-5:~ $

La c'est pas bon et il me répond inférieur au lieu de supérieur, 10 c'est plus grand que 3 ??

Comment doit je mis prendre avec if ou est mon erreur ?

pouvez-vous m'aider ?

Merci d'avance pour vos avis et conseils.

Linux / Firefox 122.0

2 réponses

jee pee Messages postés 39684 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 4 mai 2024 9 255
Modifié le 13 févr. 2024 à 13:07

Bonjour,

 "0" c'est une chaine, pour tester un nombre ce devrait être 0

Puis sur la logique if nb < 0 c'est pour tester une valeur négative, pour inclure zéro il faudrait <=

Et dans nb =input(...) nb est une chaine, il faudrait pour traiter des nombres nb=int(input(  )) 

Enfin cela permet de supprimer str() sur les str(nb_elements). On traite tout en numérique.

#!/usr/bin/python3
# -*- coding:utf-8 -*-

liste_des_fichiers_avec_chemin = ['/home/serveur/Vidéos/Films/Arthur-et-les-Minimoys_2006_TrueFrench-HDLight-1080p-x264.mkv', '/home/serveur/Vidéos/Films/Cosmic-Sin-2021-MULTi-VFI-2160p-10bit-4KLight-HDR10PLUS-BluRayAC35.1-x265-QTZ.mkv', '/home/serveur/Vidéos/Films/Chair de poule 2015 1080p FR EN X264 AC3-mHDgz.mkv']

def fonction_if(nb):
    print()
    print ("nb : ", nb)
    print ()
    
    nb_elements = len(liste_des_fichiers_avec_chemin)
    print ("nb_elements :",nb_elements)

    if nb <= 0:
        print ("contient une valeur négative ou nulle")
    elif nb < nb_elements:
        print (nb," est inferieur au nombre de la liste qui contient ",nb_elements," elements - envoyé :", nb, " - liste :",nb_elements)
    elif nb > nb_elements:
        print (nb," est superieur au nombre de la liste qui contient ",nb_elements," elements - envoyé :", nb, " - liste :",nb_elements)
    else:
        print (nb," est égal au nombre de la liste qui contient ",nb_elements," elements - envoyé :",nb, " - liste :",nb_elements)

print ()    
nb = int(input("Enter un nombre entre 0 et 100 : "))
print(nb)    
fonction_if(nb)

Le dernier elif est superfétatoire (inutile) tu as testé < et > donc ne reste qu'égal.


0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
13 févr. 2024 à 14:59

Bonjour,

Merci pour votre aide, j'avais oublié les valeur numérique et non en string.

Merci.

0