0

我需要将我的 2 命令行参数与它是否不等于"tcp"或进行比较"udp"。我知道您可以使用 or 语句,==但我无法!=在语句中适应它。

protocol = sys.argv[2]

if protocol != "tcp" or protocol != "udp":    
     print" error"
     sys.exit()
4

3 回答 3

0

怎么用in

if protocol not in ("tcp", "udp"):
    print" error"
    sys.exit()

仅供参考,不要sys.argv手动使用和验证脚本参数,而是使用argparsestdlib 中的模块。看一下方法的choices参数add_argument文档

选择 - 参数允许值的容器。

于 2013-07-23T13:10:32.820 回答
0

看,问题在于你的逻辑,答案总是不是一个或另一个。使用此代码:

if protocol not in ['tcp','udp']:
   print "error"
   sys.exit()
于 2013-07-23T13:11:35.783 回答
0

这是德摩根定律的例子。

如果有q = not (a or b), 要将其更改为使用not aand not b,则需要更改运算符:q = (not a) and (not b)

在您的情况下,ais protocol == "tcp",so protocol != "tcp"is not a,同样适用于"udp", 和b

于 2013-07-23T13:15:22.390 回答