为什么这段代码会根据缩进打印不同的内容



我注意到,当print(msg)for循环中没有缩进,并且缩进在与for循环相同的位置时,它只打印我所做的更新语句中的信息,但当它处于下面时,它应该如何向我提供我所请求的信息。

这是我的代码:

import sqlite3
conn = sqlite3.connect(':memory:')
with conn:
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS tbl_roster(
col_name TEXT, 
col_species TEXT, 
col_iq TEXT 
)")
conn.commit()
with conn:
cur = conn.cursor()
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Jean-Baptiste Zorg', 'Human', '122'))
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ('Korben Dallas', 'Meat Popsicle', '100'))
cur.execute("INSERT INTO tbl_roster(col_name, col_species, col_iq) VALUES (?, ?, ?)", ("Ak'not", 'Mangalore', '-5'))
conn.commit()

with conn:
cur = conn.cursor()
cur.execute("UPDATE tbl_roster SET col_species=? WHERE col_name=? AND col_iq=?",('Human', 'Korben Dallas', '100'))
conn.commit()

with conn:
cur = conn.cursor()
cur.execute("SELECT col_name, col_iq FROM tbl_roster WHERE col_species = 'Human'")
varSpecies = cur.fetchall()
for item in varSpecies:
msg = "Name: {} nIQ: {}  ".format(item[0], item[1])
print(msg)

Python使用缩进来定义块。如果在for循环下缩进print行,则在每次迭代时都会调用它。如果不这样做,循环将在每次迭代中迭代并覆盖msg,然后当它完成时,print语句将打印最后一个值。

最新更新