मिनट में मेरे कोड में 2 सूचियां Exercise और Weight हैं। इन दोनों में जेनरेट किए गए एंट्री बॉक्स की सामग्री है। जब सूचियों को डेटाबेस में सहेजा जा रहा है, तो मुझे यह सुनिश्चित करने की ज़रूरत है कि कोई खाली बॉक्स सबमिट नहीं किया गया है, इसे हल करने के लिए मैं यह जांचने के लिए एक सत्यापन एल्गोरिदम लिख रहा हूं कि कोई भी बॉक्स खाली है या नहीं, यह अब तक का कोड है:

for item in Exercise:
    if item == '':
        self.CreateError.configure(fg = "red")
        connection.commit()

for item in Weight:
    if item == '':
        self.CreateError.configure(fg = "red")
        connection.commit()
else:
    values = zip(Exercise, Weight, ID)
    cursor.executemany("INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)", values)        
    connection.commit()

मेरी समस्या यह है कि मेरे पास दो लूप हैं जिनमें दोनों समान else हैं। हालाँकि मुझे नहीं पता कि इसे कैसे बनाया जाए ताकि else सक्रिय हो जाए यदि सूची में दोनों में से कोई भी आइटम खाली है।

0
Narac Snave 28 मार्च 2018, 14:21

3 जवाब

सबसे बढ़िया उत्तर

जैसा कि आप व्यायाम और वजन की वस्तुओं पर समान स्थितियों का परीक्षण करते हैं, आप इसे इस तरह कर सकते हैं:

from itertools import chain

if any(item == '' for item in chain(Exercise, Weight)):
    self.CreateError.configure(fg = "red")
    connection.commit()

else:
    values = zip(Exercise, Weight, ID)
    cursor.executemany("INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)", values)        
    connection.commit()
3
Thierry Lathuille 28 मार्च 2018, 11:33

आप यहां any का उपयोग कर सकते हैं

if any(item == '' for item in Exercise) or any(item == '' for item in Weight):
    self.CreateError.configure(fg = "red")
else:
    values = zip(Exercise, Weight, ID)
    cursor.executemany("INSERT INTO Exercises(Exercise, Weight, ID) VALUES(?, ?, ?)", values)        
connection.commit()
0
Bakuutin 28 मार्च 2018, 11:34

any फ़ंक्शन का उपयोग करना एक बेहतर तरीका है:

if any(i == '' for i in Exercise) or any(i == '' for i in Weight):
    self.CreateError....
else:
    values = zip(...

इस दृष्टिकोण का नकारात्मक पक्ष यह है कि यदि आप और भी अधिक संग्रह (व्यायाम, वजन, आदि के अलावा) के माध्यम से पुनरावृति करना चाहते हैं तो यह सबसे अधिक स्केलेबल नहीं हो सकता है। हालांकि, इस शैली की एक भिन्नता इसका समाधान कर सकती है (संपादित करें: @ थियरी लैथुइल के उत्तर को देखें)

1
sshashank124 28 मार्च 2018, 11:36