簡體   English   中英

比較帶有或陳述的命令行參數與不同的字符串python

[英]compare a command line argument with or statment to different strings python

我需要將我的2命令行參數與不等於"tcp""udp"參數進行比較。 我知道您可以將or語句與==一起使用,但是在將它適應於!=時遇到了麻煩。

protocol = sys.argv[2]

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

使用in怎么樣?

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

僅供參考,而不是使用sys.argv和手動驗證腳本參數,而是使用stdlib中的argparse模塊。 看看add_argument方法docs的 choices參數:

選擇-一個參數允許值的容器。

瞧,問題出在您的邏輯上,答案永遠不會是一個或另一個。 使用此代碼:

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

這就是德摩根定律。

如果您擁有q = not (a or b) ,要將其更改為not anot b ,則需要更改運算符: q = (not a) and (not b)

在您的情況下, aprotocol == "tcp" ,因此protocol != "tcp" not a ,類似地對於"udp"b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM