Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 SQLite3导入的信息在while循环中不起作用_Python_Database_While Loop_Sqlite - Fatal编程技术网

Python SQLite3导入的信息在while循环中不起作用

Python SQLite3导入的信息在while循环中不起作用,python,database,while-loop,sqlite,Python,Database,While Loop,Sqlite,while循环用于在某人输入姓名时出错。“stdpaden”是从SQLite 3数据库中的表中提取的。使用print语句时,它如下所示: vrnaam = input("Vul de voornaam van de student in: ") atnaam = input("Vul de achternaam van de student in: ") while vrnaam or atnaam not in str(stdpaden): print("Foute invoer")

while循环
用于在某人输入姓名时出错。“stdpaden”是从SQLite 3数据库中的表中提取的。使用print语句时,它如下所示:

vrnaam = input("Vul de voornaam van de student in: ")
atnaam = input("Vul de achternaam van de student in: ")
while vrnaam or atnaam not in str(stdpaden):
    print("Foute invoer")
    vrnaam = input("Vul de voornaam van de student in: ")
    atnaam = input("Vul de achternaam van de student in: ")

然而,当我调用
vrnaam=Joswa
atnaam=Schrevel
时,它不起作用,只是停留在循环中。有什么我在监督的吗?

首先,
stdpaden
是一个元组列表,所以您需要将其展平为一个字符串列表。您可以在列表理解中这样做(
[stdpaden中的i代表x中的i]
)。然后,您的
语句就没有意义了:我想您是想看看
vrnaam或
atnaam是否都是
,所以您需要在
语句中分别给出它们自己的
。我认为这是可行的(如果您插入
Joswa
Schrevel
,它将打破循环):

为了代码的清晰性,我个人会首先打开元组列表:

while vrnaam not in [i for x in stdpaden for i in x] or atnaam not in [i for x in stdpaden for i in x]:
    print("Foute invoer")
    vrnaam = input("Vul de voornaam van de student in: ")
    atnaam = input("Vul de achternaam van de student in: ")
列表理解的备选方案

您可以使用
itertools
来展平
stdpaden
元组列表,而不是
[stdpaden中的i代表x]

stdpaden = [i for x in stdpaden for i in x]

while vrnaam not in stdpaden or atnaam not in stdpaden:
    print("Foute invoer")
    vrnaam = input("Vul de voornaam van de student in: ")
    atnaam = input("Vul de achternaam van de student in: ")
stdpaden = [i for x in stdpaden for i in x]

while vrnaam not in stdpaden or atnaam not in stdpaden:
    print("Foute invoer")
    vrnaam = input("Vul de voornaam van de student in: ")
    atnaam = input("Vul de achternaam van de student in: ")
stdpaden = list(itertools.chain(*stdpaden))

while vrnaam not in stdpaden or atnaam not in stdpaden:
    print("Foute invoer")
    vrnaam = input("Vul de voornaam van de student in: ")
    atnaam = input("Vul de achternaam van de student in: ")