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.
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 Word
s:
sentence = [Word.lower() for Word in sentence] # do this before running any of the above algorithms
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
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()
.
Ce serait comment je le ferais.
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"
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()
Utilise la fonction sorted
: / La fonction triée renvoie une version alphabétique de la liste split_sentence
.
sorted_sentence = sorted(split_sentence)
Imprimer le dernier élément de la liste:
print(sorted_sentence[-1])
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']
Il suffit d'utiliser ce qui suit:
max(sentence.lower().split())
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.