多个 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 语句未返回正确的值

if 语句在从 firebase 检索数据时未返回正确的元素

单击时jquery未返回正确的值

if函数如何实现返回值的循环

SQL 查询未返回正确的值

嵌套 if 语句返回语句句柄未执行错误