Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul de booléen

Sujet résolu
    23 mars 2015 à 15:01:05

    Salut

    Je cherche à faire quelque chose du genre :

    return sum(letter in ascii_lowercase for letter in text.lower()) if == 26

    Je sais que c'est faisable, mais je n'arrive pas à trouver la bonne syntaxe. C'est un exercice sur checkio.org.

    def check_pangram(text):
        from string import ascii_lowercase
        
        return sum(letter in ascii_lowercase for letter in text.lower()) if == 26
        
    
    if __name__ == '__main__':
        # These "asserts" using only for self-checking and not necessary for auto-testing
        assert check_pangram("The quick brown fox jumps over the lazy dog."), "brown fox"
        assert not check_pangram("ABCDEF"), "ABC"
        assert check_pangram("Bored? Craving a pub quiz fix? Why, just come to the Royal Oak!"), "Bored?"

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      23 mars 2015 à 15:09:36

      Je ferais celle-ci

      >>> s = "Portez ce vieux whisky au juge blond qui fume"
      >>> len([c for c in set(s.lower()) if ord(c) in range(97, 123)])
      26
      



      -
      Edité par Anonyme 23 mars 2015 à 15:14:40

      • Partager sur Facebook
      • Partager sur Twitter
        23 mars 2015 à 15:16:02

        Ah oui j'ai oublié de dire que ça devait renvoyer True (ou False) >_<

        Je ne pense pas que ton code soit correct, la ponctuation serait comptée aussi non ? Edit : Ok avec ord(char) ça marche mieux tout d'un coup ^^ 

        Je voudrais que ça renvoie True si il y a bien 26 lettres comme tu l'as deviné. Tout ça de façon one-liner pour le stayle :)

        Edit : 

        return True if len([c for c in set(text.lower()) if ord(c) in range(97, 123)]) == 26
        
        #Invalid syntax 
        #Idem si je fais :
        
        return if len([c for c in set(text.lower()) if ord(c) in range(97, 123)]) == 26



        -
        Edité par InhumanRampage 23 mars 2015 à 15:22:26

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 mars 2015 à 15:26:08

          len([c for c in set(s.lower()) if ord(c) in range(97, 123)]) == 26
          ???
          • Partager sur Facebook
          • Partager sur Twitter
            23 mars 2015 à 15:29:19

            Ah ben oui, quel idiot. 

            Merci :D

            • Partager sur Facebook
            • Partager sur Twitter

            Calcul de booléen

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown