使用while循环返回一个函数

时间:2015-07-02 19:08:04

标签: python list

  

在主要功能中:

     

创建一个列表,其中包含最近美国总统的姓氏,从肯尼迪开始,到奥巴马结束,按时间顺序排列。   使用for循环迭代整个列表,在自己的行上打印每个总统的名字。   通过从名单中删除前两位总统和最后两位总统来筹码。   将新切片作为参数传递给名为playlist的自定义函数。   使用while循环显示播放列表返回的列表中的元素。

     

在播放列表功能中:

     

打印切片列表的大小。使用列表功能。   按反向字母顺序对切片列表进行排序。   将此列表返回给main。

这是我到目前为止所拥有的。我无法弄清楚如何插入while循环。每次我这样做时,列表都会继续运行,或者它不会显示出来。

def main():
    #Create list.
    names = ['Kennedy', 'Johnson', 'Nixon', 'Ford', 'Carter', 'Reagan', 'Bush', 'Clinton', 'Bush', 'Obama']
    sliced_list = names[2:8]

    #Display the list.
    print('Here are the most recent presidents of the USA')
    for n in names:
    print(n)
    sliced = playlist(sliced_list)


def playlist(sliced_list):
    size = len(sliced_list)
    print('The list size is now', size)
    sliced_list.sort()
    sliced_list.reverse()
    return sliced_list

main()

这就应该回来了。

Original list in main:
Kennedy
Johnson
Nixon
Ford
Carter
Reagan
Bush
Clinton
Bush
Obama
Not in main: list size is now 6
Back in main, list in reverse alpha order
Reagan
Nixon
Ford
Clinton
Carter
Bush

4 个答案:

答案 0 :(得分:1)

使用while循环迭代列表元素而不修改列表:

i = 0
while i < len(sliced):
    print(sliced[i])
    i += 1

如果您更喜欢browskie建议的方法改变列表,我建议避免使用try-except块,如下所示:

while len(sliced):
    print(sliced.pop(0))

答案 1 :(得分:0)

Python while循环是一个简单的循环,只要满足条件就会循环,所以如果你做while i<5:这样的事情,它将循环直到i变得等于或大于5。

另外,在python中,您可以使用len(lst)获取列表的长度,也可以lst[i](其中i是一个称为索引的整数)来获取该位置的元素,原始列表中的示例,如果我们names[1],它将返回Johnson

现在在你的while循环中你想要从0开始循环到列表的长度并在每个索引处打印list元素。我希望你能根据所有信息创建你需要的程序。

答案 2 :(得分:0)

您可以尝试这样的事情:

sliced = playlist(sliced_list) #This is from your code

while True: #Will run forever
    try:
        #And try to remove and print out the first item from the list
        print(sliced.pop(0)) 
    except:
        #As soon as it exhausts the list and fails, it will stop the loop
        break 

答案 3 :(得分:0)

我想你差不多了。 while循环将继续,直到切片列表为空。

def main():
    #Create list.
    names = ['Kennedy', 'Johnson', 'Nixon', 'Ford', 'Carter', 'Reagan', 'Bush', 'Clinton', 'Bush', 'Obama']
    for name in names: #for to print names
        print name
    sliced = playlist(names[2:-2]) # slice 
    while len(sliced): # while there is names in sliced do:
        print sliced.pop() # removes the last name on sliced and prints it

def playlist(sliced_list):
    size = len(sliced_list)
    print('The list size is now', size)
    sliced_list.sort()
    sliced_list.reverse()
    return sliced_list

main()