Ciekawe sposoby kodowania warunków w Pythonie

1

Ciekawe zapisy warunków if/while w Pythonie

  1. Sprawdzanie czy element należy do zbioru:
    Czasem, nawet w książkach o programowaniu w Pythonie i Small Basicu, zdarzało mi się oglądać zapis taki jak:
if a==1 or a==10 or a==4:
      print "A jest rowne 1, 10 lub 4"

I sam długo go stosowałem dopóki nie odkryłem krótszego sposobu:

if a in [1,10,4]:
      print "A jest rowne 1, 10 lub 4"

Drugi sposób wymaga mniej pisania, ale w kodzie maszynowym (przynajmniej x86) to pierwszy sposób jest dużo oszczędniejszy.

  1. Czy tekst ma wystarczającą liczbę słów?
# Przyklad: egzamin osmoklasisty
if len(tekst.split(" "))>=250:
      print "Ok, tekst ma minimum 250 slow. Teraz sprawdzam ortografie."
  1. Czy liczba jest podzielna przez drugą liczbę?
if (108%3)==0:
      print "108 dzieli sie przez 3."

To proste, ale nieoczywiste dla początkujących.
Jeśli komuś nie działa to najprawdopodobniej ma Pythona 3 i musi dodać nawiasy do instrukcji print

3

Jeśli komuś nie działa to najprawdopodobniej ma Pythona 3 i musi dodać nawiasy do instrukcji print

Proponuję i tobie przesiąść się na trójkę, bo 2 od tego roku jest już niewspierana i ogólnie śmierdzi.

Chcesz kilka innych protipów? all i any to bardzo fajne funkcje:

if all([something.is_active for something in things]):
    print('Everything is active')

if any([something.is_active for something in things]):
    print('There is at least one active thing')

Jak sprawdzasz, czy lista jest pełna/pusta, to wystarczy

if list_:
    print('List has items')
else:
    print("List doesn't have any items")

Ogólnie szukaj pod hasłem "idiomatic python" takich rzeczy. Co fajne, python podąża za zasadą "there is only one way to do it", tzn. pisanie "idiomatycznego" kodu jest prawdopodobnie najlepszym wyborem i nie trzeba na siłę szukać optymalizacji, produkując w efekcie zaciemniony i prawdopodobnie i tak wolniejszy kod.

0

CIekawostką w Pythonie jest to, że w przeciwieństwie do języków z rodziny C obsługuję konstrukcję X < Y < Z:

>>> a = 10
>>> if 0 < a < 20:
...     print("Ok")
... 
Ok
2

Drugi sposób wymaga mniej pisania, ale w kodzie maszynowym (przynajmniej x86) to pierwszy sposób jest dużo oszczędniejszy.

To jakaś bzdura. W jaki sposób w ogóle chcesz to "tłumaczyć" na x86?

1 użytkowników online, w tym zalogowanych: 0, gości: 1