Bizonyos körülmények között értékelni másképp majd várható Python

szavazat
-1

Jelenleg ami egy darab, hogy vesz értékek egy adott értéket egy tömb, és hozzáteszi, 32

Saját IDE (PyCharm) javasolta, hogy távolítsa el a redundanciát kódomat az alábbiak végrehajtásával

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

nak nek

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

Mindkét megoldás működik nekem, de kíváncsi vagyok, hogy miért ez a megállapodás a feltételek szünetek

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

Megköszönném magyarázatot pszeudo-kódot, ha kényelmes, én még egy kicsit kezdő

A kérdést 13/02/2020 23:55
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

A harmadik kódot, amennyiben az Ön által.

ascii_key[i] <= 65 >= 90ez mindig ki kell értékelni a False.

ascii_key[i] <= 65 >= 90értékeljük ki ascii_key[i] <= 65 and 65 >= 90. 65>=90van False.

Byte-kód értékelést 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

Byte-kód értékelést 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

Meg lehet figyelni, megfigyelni a<b<cegyenértékű a<b and b<c.

Válaszolt 14/02/2020 00:00
a forrás felhasználó

szavazat
0

ez annak köszönhető, hogy hogyan feltételek megoldódnak. if ascii_key[i] >= 65 and ascii_key[i] <= 90és if 65 <= ascii_key[i] <= 90egyenértékűek. Míg if ascii_key[i] <= 65 >= 90lesz megoldani az ezen: if ascii_key[i] <= 65 and 65 >= 90 65> = 90 soha nem igaz.

Először a feltétel 65 <= ascii_key[i], majd a másik feltétel ascii_key[i] <= 90kiértékelése és leláncolva egy ÉS.

Egészségére

Válaszolt 14/02/2020 00:08
a forrás felhasználó

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