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