Python: Trouver le plus long/plus court de Mots Dans une Liste et de les Appeler dans une Fonction
J'ai une liste de mots:
mots=["alpha","omega","haut","bas","sur","sous","violet","rouge","bleu","vert"]
J'ai deux fonctions qui sont censés trouver le plus court et le plus long des mots dans cette liste:
def bigWords(list=[], *args):
largestWord=""
largestLen=0
for word in list:
if largestWord<len(word):
largestWord=len(word)
largestWord=word
print "The longest word(s) in the list is %s." % largestWord
def smallWords(list=[], *args):
smallestWord=""
smallestLen=0
for word in list:
if smallestLen>len(word):
smallestLen>len(word)
smallestWord=word
print "The shortest word(s) in the list is: %s." % (smallestWord)
J'ai ces fonctions imbriquées afin que je puisse les appeler tous à la fois:
def callFunctions():
###Words###
words=["alpha","omega","up","down","over","under","purple","red","blue","green"]
wordLength=lenList(words)
print "The amount of words[] is %d" % wordLength
func_list2 = [bigWords, smallWords]
for f in func_list2:
map(f, words)
callFunctions()
C'est juste de retourner ce sans entrée les mots de la liste:
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The longest word(s) in the list is .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
The shortest word(s) in the list is: .
Ne sais pas pourquoi, toute aide est appréciée.
Vous devez vous connecter pour publier un commentaire.
Si vous le souhaitez, il y a des moyens plus simples d'aborder le problème:
Ce produit:
Vous êtes si proche, mais je pense que le problème est dans
callFunctions()
. Vous êtes à la cartographie des fonctions dansfunc_list2
à chaque chaîne dans les mots de tableau, de ne pas appliquer la fonction à la tableau d'ensemble. C'était une bonne idée d'utiliser la carte, qui est une fonction très puissante, mais vous n'avez pas besoin de l'utiliser ici. Voici le code que j'ai testé avec un simple interprète en ligne. Essayez-la. Bonne chance avec tout ce que vous êtes d'apprentissage/le projet que vous voulez faire!Tout d'abord, vous avez une erreur dans le code de la fonction
bigWords
. Vous devriez comparer avec la longueur et non pas la parole comme suitDeuxièmement, pour utiliser les deux fonctions, vous avez besoin de les appeler pour la liste de mots et pas pour chaque mot:
Essayer cette solution simple:
vous pouvez trier vous de la liste à l'aide de
sorted()
fonction qui permet de trier la liste par la longueur des chaînes en elle.pour cela, vous devez ajouterkey=len
de sorte que la fonction de tri par longueur, et non par alphabecit commande. vous devez également donner à la fonction reverse=trueainsi, il sera plus facile d'accéder à la chaîne la plus longue (il sera dans l' [0] à la liste)
def longest(my_list):
my_list = sorted(my_list, key=len, reverse=True)
return my_list[0]
list1 = ['aaa', 'bbbb', 'cccccc', 'd']
print(longest(list1))