Def函数没有调用列表

2024-04-26 12:01:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个简单的程序来打印出一个由给定列表的第一个和最后一个元素组成的新列表

default_list = [5, 10, 15, 20, 25]
first_list = [7, 233, 76, 234, 2]
second_list = [0, 5, 2, 6, 3423456]
third_list = [768, 56, 234, 765, 2434, 78676, 345, 467, 353, 765343]
new_list = []


def list_ends(chosen_list):
    new_list.append(chosen_list[0])
    new_list.append(chosen_list[len(chosen_list) - 1])
    print(new_list)


list_ends(input(": "))

但是如果我在input中输入一个单词,比如“default\u list”,它会给我一个答案[d,t],我相信这意味着它没有调用我创建的list变量


Tags: 程序default元素列表newinputlendef
2条回答

仅供参考,可以将变量名作为输入读取,如下所示:

list_name = input("List name: ")
if list_name in locals():
    list_ends(locals()[list_name])
else:
    print('List {} not found'.format(list_name))

但是,您的用例不需要这样的解决方案。我相信有更好的方法来做你想做的事。例如,创建一个将字符串输入映射到列表的dict,然后从输入中读取字符串,并使用字典获得相应的列表

在python2中,input函数实际上允许您键入Python表达式,但在python3中,它只返回一个字符串,即一个字符序列

就像"list"list是不同的一样,字符串"default_list"与同名变量没有直接关系

但是,您可以缩小这一差距:

listname = input("List name: ")
selected = locals()[listname]

在开始之前,您应该了解允许用户访问程序的内部是有问题的,原因有很多。例如,也许您应该提供一个包含编号选项的菜单?这样,用户就不能访问任意的程序变量,只能访问您显式提供的变量

相关问题 更多 >