python if 语句和布尔值(如何将两个函数合二为一)
python if-statement and boolean(how to combine two functions into one)
我为每个 table 编写了两个函数来接收字段的命令。我的队友需要我将两个功能合二为一。最后我实现了这个功能,但它无法接收我的路由器 table 的命令。
这是我的两个功能:
# def readrouter(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
#
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
# def readswitch(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
这是我将两个函数合二为一后的函数:
def readciscodevice(x):
conn = sqlite3.connect('server.db')
cur = conn.cursor()
if x:
cur.execute(
"SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read
else:
cur.execute(
"SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read;
a = raw_input("x:")
for result in readciscodevice(a):
print(result[0])
我使用我的 if 语句,它可以读取我的开关 table 的命令,但无法从开关 table 获取命令。我是否需要写布尔值或其他东西来确保它可以访问我的路由器 table?
更新(我首先尝试 select 两个命令,即 enable 和 conf t,然后我将识别我的输入,如果输入与我的开关字段匹配 "function", 它提供了一些命令,否则将匹配我的路由器字段 "function"):
# def readciscodevice(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
#
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function='configure terminal' or function='enable' ORDER BY key ASC"
# )
#
# if x:
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read
# else:
# cur.execute(
# "SELECT DISTINCT command FROM router WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read;
#
#
# a = raw_input("x:")
# for result in readciscodevice(a):
# print(result[0])
在更新代码中:
它不能 select 启用 conf t 命令
也无法到达我的路由器的字段来获取命令..
但它可以select切换命令
您需要引入另一个参数来确定您希望执行哪个块,或者明确区分 x 的两个条件。
'If x:' 只是检查 x 是否具有有效(非假)值,因此具有空值的东西将失败,例如:0、None、false、'' 等
我为每个 table 编写了两个函数来接收字段的命令。我的队友需要我将两个功能合二为一。最后我实现了这个功能,但它无法接收我的路由器 table 的命令。 这是我的两个功能:
# def readrouter(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
#
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
# def readswitch(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
# cur.execute("SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",(x,))
# read = cur.fetchall()
# return read;
# a = input("x:")
# for result in readrouter(a):
# print (result[0])
这是我将两个函数合二为一后的函数:
def readciscodevice(x):
conn = sqlite3.connect('server.db')
cur = conn.cursor()
if x:
cur.execute(
"SELECT DISTINCT command FROM switch WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read
else:
cur.execute(
"SELECT DISTINCT command FROM router WHERE function =? or function='configure terminal' or function='enable' ORDER BY key ASC",
(x,))
read = cur.fetchall()
return read;
a = raw_input("x:")
for result in readciscodevice(a):
print(result[0])
我使用我的 if 语句,它可以读取我的开关 table 的命令,但无法从开关 table 获取命令。我是否需要写布尔值或其他东西来确保它可以访问我的路由器 table?
更新(我首先尝试 select 两个命令,即 enable 和 conf t,然后我将识别我的输入,如果输入与我的开关字段匹配 "function", 它提供了一些命令,否则将匹配我的路由器字段 "function"):
# def readciscodevice(x):
# conn = sqlite3.connect('server.db')
# cur = conn.cursor()
#
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function='configure terminal' or function='enable' ORDER BY key ASC"
# )
#
# if x:
# cur.execute(
# "SELECT DISTINCT command FROM switch WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read
# else:
# cur.execute(
# "SELECT DISTINCT command FROM router WHERE function =? ORDER BY key ASC",
# (x,))
# read = cur.fetchall()
# return read;
#
#
# a = raw_input("x:")
# for result in readciscodevice(a):
# print(result[0])
在更新代码中: 它不能 select 启用 conf t 命令 也无法到达我的路由器的字段来获取命令.. 但它可以select切换命令
您需要引入另一个参数来确定您希望执行哪个块,或者明确区分 x 的两个条件。 'If x:' 只是检查 x 是否具有有效(非假)值,因此具有空值的东西将失败,例如:0、None、false、'' 等