多个 If 语句 - 未返回正确的值
Posted
技术标签:
【中文标题】多个 If 语句 - 未返回正确的值【英文标题】:Multiple If statements - not returning the correct value 【发布时间】:2017-09-13 06:03:02 【问题描述】:我正在使用 tkinter 设计一个 GUI,用户将在其中输入特定信息,单击“创建”按钮后,该信息将按特定顺序排列,输出将以文本形式显示给用户盒子。我遇到的问题是“创建”功能的设计。我相信我必须使用多个 If 语句才能完成此操作,但我在文本框中得到的输出是“tcpdump -i eth1 None host 9.9.9.9NoneNone”。显然,我不希望包含“无”,我该如何纠正这个?下面是我的“创建”函数。
谢谢,
def create(self):
data = "tcpdump "
data += "-i " + self.int_entry.get() + " "
if self.anyInt.get():
data += "any "
if self.src_entry.get() and not self.srcIP.get():
data += "host " + self.src_entry.get() + " "
elif self.src_entry.get() and self.srcIP.get():
data += "src " + self.src_entry.get()
data += self.AndOr.get() + " "
if self.notDst.get():
data += "not "
if self.dst_entry.get() and not self.dstIP.get():
data += "host " + self.dst_entry.get()
elif self.dst_entry.get() and self.dstIP.get():
data += "dst" + " " + self.dst_entry.get()
data += self.AndOrport.get()
if self.notSrcPort.get():
data += "not "
if self.srcport_entry.get():
data += "src port " + self.srcport_entry.get() + " "
data += self.SrcDstport.get()
if self.notDstPort.get():
data += "not "
if self.dstport_entry.get():
data += "dst port " + self.dstport_entry.get()
self.filterData.delete(0.0, END)
self.filterData.insert(0.0, data)
def main():
root = Tk()
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
【问题讨论】:
您确实需要限制您发布的代码量。这是太多的代码,无法期望我们去挖掘。您需要进行调试以缩小代码范围,并发布一个重现问题的较小示例。 明白,谢谢。 我认为您错过了@Carcigenicate 评论中的“发布一个重现问题的较小示例”部分,您只裁剪了您的代码,但它不再可重现 我只能看到一个函数下有许多if
语句。我认为你不能说if if elif if if elif if if
。请使用正确的缩进。
你不断得到你的None
,因为像data += self.AndOrport.get()
或data += self.SrcDstport.get()
这样的行超出了你的if
逻辑。所以也将逻辑附加到它们,或者从最终结果中删除None
。
【参考方案1】:
你必须使用一次 if,然后 else if。 您也可以处理案例。认识图书馆并拿一本关于 C++ 和 C 开发的好书。或在线教程。
【讨论】:
以上是关于多个 If 语句 - 未返回正确的值的主要内容,如果未能解决你的问题,请参考以下文章
使用 != (sqlite3) 时 SELECT 语句未返回正确的值