python - पायथन का समतुल्य && (तार्किक-और) एक बयान में


यहां मेरा कोड है:

# F. front_back
# Consider dividing a string into two halves.
# If the length is even, the front and back halves are the same length.
# If the length is odd, we'll say that the extra char goes in the front half.
# e.g. 'abcde', the front half is 'abc', the back half 'de'.
# Given 2 strings, a and b, return a string of the form
#  a-front + b-front + a-back + b-back
def front_back(a, b):
  # +++your code here+++
  if len(a) % 2 == 0 && len(b) % 2 == 0:
    return a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):] 
  else:
    #todo! Not yet done. :P
  return

यदि सशर्त में मुझे एक त्रुटि मिल रही है मैं क्या गलत कर रहा हूं?


Answers


आप चाहते हैं and इसके बजाय &&




पायथन उपयोग करता है and और or कंडीशंस

अर्थात

if foo == 'abc' and bar == 'bac' or zoo == '123':
  # do something



दो टिप्पणियां:

  • पायथन में तार्किक संचालन का प्रयोग करें and और or
  • 2 के बजाय इंडेंट के लिए 4 रिक्त स्थान का उपयोग करें। आप अपने आप को बाद में धन्यवाद देंगे क्योंकि आपका कोड सभी के कोड के रूप में बहुत ज्यादा दिखाई देगा। अधिक विवरण के लिए पीईपी 8 देखें।



मैं एक पूर्णतया गणितीय समाधान के साथ गया:

def front_back(a, b):
  return a[:(len(a)+1)//2]+b[:(len(b)+1)//2]+a[(len(a)+1)//2:]+b[(len(b)+1)//2:]



शायद यह इस कार्य के लिए सबसे अच्छा कोड नहीं है, लेकिन काम कर रहा है -

def front_back(a, b):

 if len(a) % 2 == 0 and len(b) % 2 == 0:
    print a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):]

 elif len(a) % 2 == 1 and len(b) % 2 == 0:
    print a[:(len(a)/2)+1] + b[:(len(b)/2)] + a[(len(a)/2)+1:] + b[(len(b)/2):] 

 elif len(a) % 2 == 0 and len(b) % 2 == 1:
     print a[:(len(a)/2)] + b[:(len(b)/2)+1] + a[(len(a)/2):] + b[(len(b)/2)+1:] 

 else :
     print a[:(len(a)/2)+1] + b[:(len(b)/2)+1] + a[(len(a)/2)+1:] + b[(len(b)/2)+1:]



आप सी, सी ++ जैसी तार्किक कार्रवाइयां का उपयोग and or प्रयोग or सकते हैं शाब्दिक रूप से and && और or ||

इस मजेदार उदाहरण पर एक नज़र डालें,

कहें कि आप पायथन में लॉजिक गेट्स बनाना चाहते हैं:

def AND(a,b):
    return (a and b) #using and operator

def OR(a,b):
    return (a or b)  #using or operator

अब उन्हें कॉल करने का प्रयास करें:

print AND(False, False)
print OR(True, False)

यह आउटपुट होगा:

False
True

उम्मीद है की यह मदद करेगा!




हो सकता है कि इसके बजाय और इसके बजाय% अधिक तेज़ और मैनेटेन वाचनीयता है

अन्य परीक्षण भी / अजीब

एक्स भी है? x% 2 == 0

एक्स अजीब है? नहीं x% 2 == 0

संभवतः बिटवर्ड और 1 के साथ अधिक स्पष्ट है

एक्स अजीब है? एक्स और 1

एक्स भी है? नहीं एक्स और 1 (विषम नहीं)

def front_back(a, b):
    # +++your code here+++
    if not len(a) & 1 and not len(b) & 1:
        return a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):] 
    else:
        #todo! Not yet done. :P
    return



सशर्त में "और" का प्रयोग ज्यूपिटर नोटबुक में आयात करते समय मैं इसका उपयोग अक्सर करता हूं:

def find_local_py_scripts():
    import os # does not cost if already imported
    for entry in os.scandir('.'):
        # find files ending with .py
        if entry.is_file() and entry.name.endswith(".py") :
            print("- ", entry.name)
find_local_py_scripts()

-  googlenet_custom_layers.py
-  GoogLeNet_Inception_v1.py