Python if içinde birden fazla argüman nasıl eklenir?

Boranity

Hectopat
Katılım
7 Şubat 2021
Mesajlar
2.603
Makaleler
1
Çözümler
38
if ("-t" in sys.argv): birden fazla argüman nasıl eklerim? Python öğreniyorum saçma soruysa kusuruma bakmayın. Şu şekil yaptığım zaman if ("-t","--tum" in sys.argv): argüman vermeden de if içindekiler çalışıyor çözemedim. Yardımcı olur musunuz?
 
Son düzenleme:
sys.argv için fikrim yok ama istersen argparse kullanabilirsin.
Örnek kod bırakıyım.
Python:
armvg = "arm"
 amd64vg = "x86_64"
 amd64vg2 = "x64"

 gappsvariant = "pico"
 gappsandroid = "11.0"

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-a", "--arch", nargs='?', const=amd64vg, default=amd64vg, choices=[armvg, amd64vg, amd64vg2])
parser.add_argument("-va", "--variant", nargs='?', const=gappsvariant, default=gappsvariant, choices=["super", "stock", "full", "mini", "micro", "nano", "pico"])
args = parser.parse_args()

if args.arch == armvg:
        gappsarch = armvg
elif args.arch == amd64vg or args.arch == "x64":
        gappsarch = amd64vg
else:
        print("ERROR !!!")

if args.variant == "pico":
         gappsvariant == "pico"
else:
        gappsvariant == args.variant

args.arch nereden geldi diye sorabilirsin eğer dikkatli incellersen add_argument içine ilk kısaltmış halini daha sonrada uzun komut halini yazdım yani "--arch" dan geliyor bu değer.
 
sys.argv için fikrim yok ama istersen argparse kullanabilirsin.
Örnek kod bırakıyım.
Python:
armvg = "arm"
 amd64vg = "x86_64"
 amd64vg2 = "x64"

 gappsvariant = "pico"
 gappsandroid = "11.0"

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-a", "--arch", nargs='?', const=amd64vg, default=amd64vg, choices=[armvg, amd64vg, amd64vg2])
parser.add_argument("-va", "--variant", nargs='?', const=gappsvariant, default=gappsvariant, choices=["super", "stock", "full", "mini", "micro", "nano", "pico"])
args = parser.parse_args()

if args.arch == armvg:
        gappsarch = armvg
elif args.arch == amd64vg or args.arch == "x64":
        gappsarch = amd64vg
else:
        print("ERROR !!!")

if args.variant == "pico":
         gappsvariant == "pico"
else:
        gappsvariant == args.variant

args.arch nereden geldi diye sorabilirsin eğer dikkatli incellersen add_argument içine ilk kısaltmış halini daha sonrada uzun komut halini yazdım yani "--arch" dan geliyor bu değer.
Argparse'yi bir türlü çözemedim hocam niyeyse.
 
Python:
import sys

flags = ["a","b","c"]

if (set(flags) & set(sys.argv)):
    print("Hello World!")

En pythonic çözüm bence bu şekilde olur. Set'e çevirme işlemi biraz can sıkıcı, ancak sanırım python 3'te arraylar arası and operasyonu yapamıyoruz.

Burada yaptığım şey iki listeyi bir AND kapısından geçirmek böylece ortak bir eleman varsa o(nlar) yoksa null dönecektir. if ortak eleman olma durumunu true olarak yorumlayacağından eğer a b c argümanlarından birini verdiysek Hello World ekrana basacağız.
 

Yeni konular

Yeni mesajlar

Geri
Yukarı