Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中引用列表_Python_Python 3.x_List - Fatal编程技术网

在python中引用列表

在python中引用列表,python,python-3.x,list,Python,Python 3.x,List,我有一个关于列表的问题,所以我创建了这个代码作为一个很好的例子,我想创建一个名称列表,这样当我登录时,它可以引用这里列出的名称列表,我不会得到“拒绝访问”。我试着用visualstudio代码来做这件事,但仍然不起作用,有什么办法来纠正这个问题吗?或者如果语句不是这种代码的正确选择 def name_login(): list_of_names = ["Alice", "Bob", "Apple"] name = input("Name: ") if name in l

我有一个关于列表的问题,所以我创建了这个代码作为一个很好的例子,我想创建一个名称列表,这样当我登录时,它可以引用这里列出的名称列表,我不会得到“拒绝访问”。我试着用visualstudio代码来做这件事,但仍然不起作用,有什么办法来纠正这个问题吗?或者如果语句不是这种代码的正确选择

def name_login():
    list_of_names = ["Alice", "Bob", "Apple"]

    name = input("Name: ")
    if name in list_of_names:
        print("Welcome back %s" % (name))
        name_login()
    else:
        if len(name) > 0:
            print("Access Denied")
        else:
            print("Invalid Input")


欢迎来到StackOverflow

以下是有问题的几行:

如果名称==名称列表:
打印(“欢迎返回%s”%(名称))
elif len(名称)>0和名称!=列出所有名称:
您真正想要的不是检查列表与字符串的相等性(操作符
=
),而是检查列表中是否包含字符串

在操作符中使用

以下是一个教程:

UPD 1:而不是
=
,您可能希望在
运算符中使用
而不是。请参见教程


UPD2:一旦你解决了你的问题,一定要把你的代码提交给。有很多方法可以改进你的代码,我想你会从中受益。

想想
name==list\u of\u name
:你希望你的输入与你的列表相同吗?我想不是,您需要检查是否包含,这是通过
in
操作符完成的

if name in list_of_names:

  • 在第二个条件中,不需要
    名称不在名称列表中,因为它肯定是真的(因为条件1尚未验证)
  • 使用while循环,再次请求名称
最后:

def name_login():
    list_of_names = ["Alice", "Bob", "Apple"]
    while True:
        name = input("What is your name: ")
        if name in list_of_names:
            print("Welcome back %s" % (name))
            break
        elif len(name):
            print("Access Denied")
        elif len(name) <= 0:
            print("Invalid Input")
def name_login():
姓名列表=[“爱丽丝”、“鲍勃”、“苹果”]
尽管如此:
name=输入(“您的姓名:”)
如果名称在名称列表中:
打印(“欢迎返回%s”%(名称))
打破
elif len(姓名):
打印(“访问被拒绝”)
elif len(名字)试试这个:

def name_login():
    list_of_names = ["Alice", "Bob", "Apple"]

    while True:
        name = input("Name: ")
        if len(name) == 0:
            print("Invalid Input")
            continue

        if name in list_of_names:
            print("Welcome back %s" % (name))
            break
        if name not in list_of_names:
            print("Access Denied")
            continue

name_login()
问题在于您的代码段:

if name == list_of_names:
    print("Welcome back %s" % (name))
elif len(name) > 0 and name != list_of_names:
要检查元素(在您的例子中是
str
)是否存在于
列表中,您需要在Python中的
操作符中执行

如果使用
=
运算符比较
str
列表
,它将始终返回
False

  • name==list\u of\u name
    永远不会是真的,就像苹果永远都不等于苹果篮一样。您希望将
    名称放在名称列表中

  • 这实际上是不够的,因为
    input
    将读取用户的字符串和最后的换行符,而最后的换行符不存在于任何数组元素中,因此任何输入都不可能匹配。使用
    strip()

  • 类似地,在
    elif
    中,您可能希望
    名称不在名称列表中

  • 但是,在
    elif
    中,您知道
    名称不在名称列表中,因为如果不是这样,它将在
    if
    中被捕获,而不会继续进行
    elif
    ,因此测试是多余的
    len(name)>0本身就足够了

  • 但是,由于字符串的长度不能为负,
    len(name)>0
    相当于
    len(name)!=0
    。在Python中,该表达式恰好与
    len(name)
    具有相同的真值,并且最终是
    name
    (字符串、列表和其他容器如果为空则为假,否则为真)


  • 在下一个
    elif
    中,您不需要检查
    len(name)
    len(name)@usr2564301 the==0是的,伟大的。您添加了大量信息
    
    list_of_names = ["Alice", "Bob", "Apple"]
    while True:
        name = input("Name: ").strip()
        if not name:
            print("Invalid Input")
        elif name in list_of_names:
            print("Welcome back %s" % (name))
            break
        else:
            print("Invalid Input")