web-dev-qa-db-fra.com

Python - Disposition des mots dans l'ordre alphabétique

Le programme doit imprimer le nom qui est le dernier des 8 éléments en ordre alphabétique. Les noms/mots peuvent être entrés de n'importe quelle manière par code. Je pense que je devrais utiliser des listes et in range() ici. . J'ai eu l'idée de comparer la première/seconde/troisième/... lettre du nom saisi avec les lettres de la précédente, puis de la mettre à la fin de la liste ou devant la précédente (en fonction de la comparaison). ), puis en répétant cela pour le nom suivant. A la fin, le programme imprimera le dernier membre de la liste.

8
CrashZer0

Les comparaisons de chaînes de Python sont lexicales par défaut, vous devriez donc pouvoir appeler max et vous en tirer:

In [15]: sentence
Out[15]: ['this', 'is', 'a', 'sentence']
In [16]: max(sentence)
Out[16]: 'this'

Bien sûr, si vous voulez le faire manuellement:

In [16]: sentence
Out[16]: ['this', 'is', 'a', 'sentence']

In [17]: answer = ''

In [18]: for Word in sentence:
   ....:     if Word > answer:
   ....:         answer = Word
   ....:         

In [19]: print answer
this

Ou vous pouvez trier votre phrase:

In [20]: sentence
Out[20]: ['this', 'is', 'a', 'sentence']

In [21]: sorted(sentence)[-1]
Out[21]: 'this'

Ou, triez-le inversé:

In [25]: sentence
Out[25]: ['this', 'is', 'a', 'sentence']

In [26]: sorted(sentence, reverse=True)[0]
Out[26]: 'this'

Mais si vous voulez complètement manuel (ce qui est si douloureux):

def compare(s1, s2):
    for i,j in Zip(s1, s2):
        if ord(i)<ord(j):
            return -1
        Elif ord(i)>ord(j):
            return 1
    if len(s1)<len(s2):
        return -1
    Elif len(s1)>len(s2):
        return 1
    else return 0

answer = sentence[0]
for Word in sentence[1:]:
    if compare(answer, Word) == -1:
        answer = Word

# answer now contains the biggest Word in your sentence

Si vous voulez que cela soit agnostique par rapport à la capitalisation, assurez-vous d'appeler d'abord str.lower() sur votre Words:

sentence = [Word.lower() for Word in sentence] # do this before running any of the above algorithms
8
inspectorG4dget

Comme indiqué dans une réponse précédente, les comparaisons de chaînes sont lexicales par défaut. Vous pouvez donc utiliser min() et max(). Pour gérer les mots en majuscule et en minuscule, on peut spécifier key=str.lower. Par exemple:

s=['This', 'used', 'to', 'be', 'a', 'Whopping', 'Great', 'sentence']
print min(s), min(s, key=str.lower)
# Great a

print max(s), max(s, key=str.lower)
# used Whopping
3

Utilisez la méthode sort().

strings = ['c', 'b', 'a']
strings.sort()
print strings

La sortie sera,

['a', 'b', 'c']

Si vous voulez le dernier, vous pouvez utiliser la méthode max().

3
adarsh

Ce serait comment je le ferais.

  1. Définissez la chaîne: Pour les arguments, disons que la chaîne est déjà prédéfinie.

    sentence = "This is the sentence that I need sorted"
    
  2. Utilisez la méthode split(): La méthode split() renvoie une liste de "mots" de la chaîne sentence. J'utilise le terme "mot" ici de manière approximative car la méthode n'a pas de conception de "mot", elle sépare simplement la chaîne sentence dans une liste en l'analysant pour les caractères délimités par des espaces et les affiche sous forme d'éléments discrets dans une liste. Cette liste n'est pas encore classée par ordre alphabétique.

    split_sentence = sentence.split()
    
  3. Utilise la fonction sorted: / La fonction triée renvoie une version alphabétique de la liste split_sentence.

     sorted_sentence = sorted(split_sentence)
    
  4. Imprimer le dernier élément de la liste:

    print(sorted_sentence[-1])
    
1
seeker

Si vous avez un mélange de mots en majuscules et de minuscules, procédez comme suit:

from string import capwords     

words = ['bear', 'Apple', 'Zebra','horse']

words.sort(key = lambda k : k.lower())

answer = words[-1]

Résultat:

>>> answer
'Zebra'
>>> words
['Apple', 'bear', 'horse', 'Zebra']
1
Akavall

Il suffit d'utiliser ce qui suit:

max(sentence.lower().split())
0
Shubham Kundu

En python, la méthode sort () trie toutes les chaînes par ordre alphabétique afin que vous puissiez utiliser cette fonction.

Vous pouvez faire une liste de tous vos mots et ensuite:

  listName.sort()

Cela donnerait une liste triée par ordre alphabétique. 

0
Fyre