如何在列表中显示元音的数量?

首先,我需要编写一个程序,按照它们距太阳的位置降序显示列表中行星的名称。然后,我应该编写一个程序,按照行星名称中的元音数量升序显示列表行星中的行星名称。


我已经能够完成第一部分。然而,我不能第二部分。


Planets = [("Mercury", 75, 1), ("Venus", 460, 2), ("Mars", 140, 4),

           ("Earth", 510, 3), ("Jupiter", 62000, 5), ("Neptune", 7640, 8),

           ("Saturn", 42700, 6), ("Uranus", 8100, 7)]



def main():

    Planets.sort(key=Sort_By_Position,reverse=True)

    print("The names of the planets in descending order by their position from the Sun: ")

    for i in Planets:

        print (i[0])


    print(" ")


    print("Planets in ascending order by the number of vowels in planet name: ")

    Planets.sort(key=vowel_count)

    for i in Planets:

        print(i[0])


def Sort_By_Position(Planets):

    return Planets[-1]


def vowel_count():



main()

我希望该程序按行星名称中的元音数量向我显示行星的升序。


森栏
浏览 140回答 3
3回答

呼啦一阵风

您提到您能够完成第一部分,因此您基本上只询问第二部分。以下示例应该可以帮助您指明正确的方向:>>> planets = ['Mercury','Venus','Earth','Mars','Neptune','Jupiter','Saturn','Uranus']>>> vowels = ('a','e','i','o','u')>>> name_counts = []>>> for name in planets:...     count = sum([1 for letter in name if letter.lower() in vowels])...     name_counts.append((name,count))... >>> print(sorted(name_counts, key=lambda x: x[1]))[('Mars', 1), ('Mercury', 2), ('Venus', 2), ('Earth', 2), ('Saturn', 2), ('Neptune', 3), ('Jupiter', 3), ('Uranus', 3)]

陪伴而非守候

这是解决方案Planets = [("Mercury", 75, 1), ("Venus", 460, 2), ("Mars", 140, 4), ("Earth", 510, 3), ("Jupiter", 62000, 5), ("Neptune", 7640, 8), ("Saturn", 42700, 6), ("Uranus", 8100, 7)]# decending order in ordernew_pl=Planets.copy()new_pl.sort(key=lambda x:x[2], reverse=True) # sorting on position valueprint(new_pl)"""output[('Neptune', 7640, 8), ('Uranus', 8100, 7), ('Saturn', 42700, 6), ('Jupiter', 62000, 5), ('Mars', 140, 4), ('Earth', 510, 3), ('Venus', 460, 2), ('Mercury', 75, 1)]"""# in no of vowels presentvowel = ['a','e','i','o','u']# in vowelsdef count(name):    vowel = ['a','e','i','o','u']    val=0    for i in name.lower():        if i in vowel:            val+=1    return valnew_pl_2=Planets.copy()new_pl_2.sort(key=lambda x:count(x[0])) #sorting on count of vowelsprint(new_pl_2)"""output[('Mars', 140, 4), ('Mercury', 75, 1), ('Venus', 460, 2), ('Earth', 510, 3), ('Saturn', 42700, 6), ('Jupiter', 62000, 5), ('Neptune', 7640, 8), ('Uranus', 8100, 7)]"""

喵喵时光机

您可以使用列表理解在一行中完成此操作。def vowel_count(elem):  return len([x for x in elem[0] if x in ('a', 'e', 'i', 'o', 'u')])elem[0]包含您正在迭代的行星的名称。当您遍历字符串 ( x in elem[0]) 时,它将遍历该字符串中的每个单独字符。例如,'Earth'变成['E', 'a', 'r', 't', 'h']。从那里,我们可以简单地过滤列表推导式以仅包含元音 ( if x.lower() in ('a', 'e', 'i', 'o', 'u')) 并返回推导式的长度,并将其反馈给sort方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python