कुछ शर्तों के अलग ढंग से तो अजगर में होने की उम्मीद मूल्यांकन

वोट
-1

वर्तमान में एक टुकड़ा है कि मूल्यों एक सरणी में दिए गए मूल्य लेता है और 32 कहते हैं बनाने

मेरे आईडीई (PyCharm) की सिफारिश की है कि मैं निम्नलिखित कार्य करके अपना कोड में एक अतिरेक को दूर

if ascii_key[i] >= 65 and ascii_key[i] <= 90:
    ascii_key[i] = ascii_key[i] + 32

सेवा

if 65 <= ascii_key[i] <= 90:
    ascii_key[i] = ascii_key[i] + 32

दोनों समाधान मेरे लिए काम है, लेकिन मैं क्यों की स्थिति टूट जाता है की इस व्यवस्था के रूप में उत्सुक हूँ

if ascii_key[i] <= 65 >= 90:
    ascii_key[i] = ascii_key[i] + 32

यदि सुविधाजनक, मैं अभी भी एक सा नौसिखिया हूँ मैं छद्म कोड में एक स्पष्टीकरण की सराहना करेंगे,

13/02/2020 को 21:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

आपके द्वारा प्रदान की तीसरी कोड में।

ascii_key[i] <= 65 >= 90यह हमेशा के लिए मूल्यांकन किया जाता है False

ascii_key[i] <= 65 >= 90के रूप में मूल्यांकन किया जाता है ascii_key[i] <= 65 and 65 >= 9065>=90है False

की बाइट-कोड मूल्यांकन a<b<c

In [17]: dis.dis('a<b<c')
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 DUP_TOP
              6 ROT_THREE
              8 COMPARE_OP               0 (<)
             10 JUMP_IF_FALSE_OR_POP    18
             12 LOAD_NAME                2 (c)
             14 COMPARE_OP               0 (<)
             16 RETURN_VALUE
        >>   18 ROT_TWO
             20 POP_TOP
             22 RETURN_VALUE

की बाइट-कोड मूल्यांकन a<b and b<c

In [18]: dis.dis('a<b and b<c')
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 COMPARE_OP               0 (<)
              6 JUMP_IF_FALSE_OR_POP    14
              8 LOAD_NAME                1 (b)
             10 LOAD_NAME                2 (c)
             12 COMPARE_OP               0 (<)
        >>   14 RETURN_VALUE

आप देख अवलोकन कर सकते हैं a<b<cके बराबर है a<b and b<c

13/02/2020 को 22:00
का स्रोत उपयोगकर्ता

वोट
0

यह कैसे की स्थिति हल कर रहे हैं के कारण है। if ascii_key[i] >= 65 and ascii_key[i] <= 90और if 65 <= ascii_key[i] <= 90बराबर हैं। जबकि if ascii_key[i] <= 65 >= 90इस का संकल्प लिया जाता है: if ascii_key[i] <= 65 and 65 >= 90 65> = 90 सच नहीं है।

पहली शर्त 65 <= ascii_key[i]और फिर दूसरे हालत ascii_key[i] <= 90का मूल्यांकन किया और एक और के साथ श्रृंखलित कर रहे हैं।

चियर्स

13/02/2020 को 22:08
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more