使用函数唯一参数打印名称列表

时间:2017-02-28 01:44:28

标签: list function python-3.x loops

我正在编写一个程序,其中包含一个包含四位美国总统名单的列表。使用你想要的任何总统。然后,运行一个循环,将更多的总统添加到列表中。以列表作为唯一参数调用另一个函数。第二个函数应该对列表进行排序,然后遍历列表以在其自己的行上打印每个总统的名称。我已完成一些代码,但它只打印第一组名称的列表。我无法弄清楚如何对名称进行排序并打印列表中输入的所有名称。

这是我的代码:

president = 4

def main():

    names = [0] * president

    for pres in range(president):
        print('Enter the name of a president',sep='',end='')
        names[pres] = input()
        names.sort()
        print(names)


    for pres in range(president):
        print('Enter the name of another president',sep='',end='')
        names[pres] = input()


def names(name_list):
    name_list.sort()
    return name_list

3 个答案:

答案 0 :(得分:0)

变量' pres'在第17行的第二个循环中重置(它将循环遍历索引0-3并覆盖前4个总统)。要快速解决问题,可以尝试第17行的names[pres + 4] = input()和第6行的names = [""] * 8

答案 1 :(得分:0)

for pres in range(president):
    print('Enter the name of a president',sep='',end='')
    names[pres] = input()
    names.sort()
    print(names)

每次添加新总统时,您都不需要names.sort()。如果您想添加4位总统,请添加它。排序是最后一步,对吧?

在第二个循环中,您使用相同的索引添加另一个总统。这将改变你的列表中的元素,你仍然会有4位总统,不再有。我的建议是使用

new_president = input()
names.append(new_president)

而不是

names[pres] = input()

这是我的完整代码:

def create_presidents(no_presidents=4):
    presidents = []
    for _ in range(no_presidents):
        presidents.append(input("Enter a name: "))
    # More presidents
    for _ in range(no_presidents):
        presidents.append(input("Enter another name: "))
    presidents.sort()
    return presidents

def print_presidents(presidents):
    for president in presidents:
        print(president)

if __name__ == "__main__":
    no_presidents = 4
    presidents = create_presidents(no_presidents)
    print_presidents(presidents)   

答案 2 :(得分:0)

我比现在开始时更加困惑:(。嗯,我认为默认情况下4个总统名称应该在列表中然后用户输入并在该列表中添加4个其他名称然后它应该显示列表