Python'daki tüm talimatlar ve ifadeler. Python'da Mantıksal Operatörler

  • 18.06.2019

Şebeke

Tanım

Örnekler

Mantıksal operatör "VE". Her iki işlenen de doğruysa koşul doğru olacaktır.

True ve True eşittir True. Doğru ve Yanlış eşittir Yanlış. False ve True eşittir False. False ve False, False'a eşittir.

Mantıksal operatör "VEYA". İşlenenlerden en az biri doğruysa, ifadenin tamamı doğru olacaktır.

True veya True eşittir True. Doğru veya Yanlış eşittir Doğru. False veya True eşittir True. False veya False, False'a eşittir.

Mantıksal operatör "DEĞİL". İşlenenin Boole değerini tersine çevirir.

Doğru Değil Yanlıştır. Yanlış değil, Doğrudur.

    Python. Şube operatörleri. Koşullu operatör. Çoktan seçmeli operatör. Döngü organizasyon yapıları.

Şube operatörü (koşullu ifade, koşullu ifade)- operatör, yalnızca belirli bir mantıksal ifade doğruysa belirli bir komutun (komutlar dizisinin) yürütülmesini veya bazı ifadelerin değerine bağlı olarak birkaç komuttan (komut kümesi) birinin yürütülmesini sağlayan bir programlama dili yapısı.

Şube bildirimi if....else

Koşullu operatör, bazı mantıksal ifadelerin (koşul) "true" true değerini alması koşuluyla, belirli komutların yürütülmesini uygular. Çoğu programlama dilinde, koşullu bir ifade if anahtar sözcüğüyle başlar.

Çoktan seçmeli operatör

Çoktan seçmeli talimat, bazı elif tamsayı değişkenlerinin hangi değere sahip olacağına bağlı olarak programın farklı bölümlerini çalıştırmanıza izin verir.

while ve for döngüleri

while ifadesi, genel döngüleri düzenlemenin bir yolunu sağlar;

for ifadesi, dizilerdeki öğeleri geçmek ve yürütmek için tasarlanmıştır.

her biri için kod bloğu.

14.Python. Tuple'lar, sözlükler, listeler. dilimler

Bir demet aslında değişmez bir listedir.

Listeler varsa neden demetlere ihtiyacımız var?

Aptal koruması. Yani, demet hem kasıtlı (ki bu kötü) hem de tesadüfi (ki iyi) değişikliklerden korunur.

Aynı kötü şöhretli Tuple() işlevini kullanarak yinelenebilir bir nesneden bir Tuple oluşturabilirsiniz.

>>> a = tuple("merhaba dünya!")

("Selam Dünya", "! ")

Python'da sözlükler- anahtarla erişime sahip rastgele nesnelerin sırasız koleksiyonları. Bazen ilişkisel diziler veya karma tablolar olarak da adlandırılırlar.

Sözlük Yöntemleri

dikte.temizle() - sözlüğü temizler.

dikte kopyası() - sözlüğün bir kopyasını döndürür.

sınıf yöntemi dict.fromkeys(seq[, değer]) - seq ve değer değerinden anahtarlarla bir sözlük oluşturur (varsayılan Yoktur).

dict.get(key[, varsayılan]) - anahtarın değerini döndürür, ancak mevcut değilse, bir istisna oluşturmaz, ancak varsayılanı döndürür (varsayılan Yoktur).

dict.öğeler() - çiftleri (anahtar, değer) döndürür.

dict.keys() - sözlükteki anahtarları döndürür.

dict.pop(anahtar[, varsayılan]) - anahtarı kaldırır ve değeri döndürür. Anahtar yoksa, varsayılanı döndürür (varsayılan olarak bir istisna atar).

dict.popitem() - bir çifti siler ve döndürür (anahtar, değer). Sözlük boşsa, bir KeyError istisnası atar. Sözlüklerin sırasız olduğunu unutmayın.

dict.setdefault(anahtar[, varsayılan]) - anahtarın değerini döndürür, ancak mevcut değilse, bir istisna oluşturmaz, ancak varsayılan değere sahip bir anahtar oluşturur (varsayılan Yoktur).

dikte güncelleme() - sözlüğü günceller, diğerlerinden çiftler (anahtar, değer) ekler. Mevcut anahtarların üzerine yazılır. Yok döndürür (yeni bir sözlük değil!).

dikte değerleri() - sözlükteki değerleri döndürür.

Listeler nedir?

Python'daki listeler, rastgele türlerdeki nesnelerin değiştirilebilir koleksiyonlarıdır (bir diziye çok benzer, ancak türler farklı olabilir).

Listeleri kullanmak için onları oluşturmanız gerekir. Liste oluşturmanın birkaç yolu vardır. Örneğin, yinelenebilir herhangi bir nesneyi (bir dize gibi) list: yerleşik işleviyle işleyebilirsiniz.

Liste yöntemleri tablosu

Yöntem Ne yapar

list.append(x) Listenin sonuna bir eleman ekler

list.extend(L) L'nin tüm öğelerini sonuna ekleyerek listeyi genişletir.

list.insert(i, x) i-inci öğeye x değerini ekler

list.remove(x) Listedeki x değerine sahip ilk öğeyi kaldırır

list.pop([i]) i-th öğesini kaldırır ve döndürür. Dizin belirtilmemişse, son öğe kaldırılır.

list.index(x, ]) İlk öğenin konumunu x değeriyle baştan sona döndürür

list.count(x) x değerine sahip öğelerin sayısını döndürür

list.sort() Bir işleve göre bir listeyi sıralar

list.reverse() Bir listeyi tersine çevirir

list.copy() Bir listenin sığ kopyası (python 3.3'te yeni)

list.clear() Listeyi temizler (python 3.3'te yeni)

dilimler

Python'da indekslere ek olarak dilimler de vardır.

item - STEP adımı ile BAŞLANGIÇ numarasından STOP'a (bu dahil değil) bir dilim alır. Varsayılan olarak, BAŞLAT = 0, DUR = nesne uzunluğu, ADIM = 1. Buna göre, bazı (ve muhtemelen tüm) parametreler atlanabilir.

>>>a=

Ayrıca, tüm bu parametreler negatif olabilir:

>>>a=

>>> bir[::-1]

>>> a[-2::-1]

>>> bir

Son örnekte liste boştur çünkü BAŞLAT< STOP, а STEP отрицательный. То же самое произойдёт, если диапазон значений окажется за пределами объекта:

>>>a=

>>> bir

Ayrıca, dilimleri kullanarak yalnızca öğeleri çıkarmakla kalmaz, aynı zamanda öğe ekleyip kaldırabilirsiniz (elbette, yalnızca değiştirilebilir diziler için).

>>>a=

>>>a=

Operatörler, işlenenlerin değerini değiştirebilen yapılardır. 4 + 5 = 9 ifadesini ele alalım. Burada 4 ve 5'e işlenen, + ise operatör olarak adlandırılır.

Operatör türleri

Python dili aşağıdaki operatör türlerini destekler:

  • Aritmetik operatörler
  • Karşılaştırma (ilişkisel) operatörleri
  • atama operatörleri
  • Mantıksal operatörler
  • Bit operatörleri
  • Üye Operatörler
  • Kimlik Operatörleri

Tüm operatörleri tek tek inceleyelim.

Python'da Aritmetik Operatörler

a değer 10 ve değişken b 21 değerini içerir, ardından:

ŞebekeTanımörnek
+ EklemeOperatörün her iki tarafına da değerler ekleme.a + b = 31
- çıkarmaSağ işleneni sol işlenenden çıkarın.a – b = -11
* Çarpma işlemiBir operatörün her iki tarafındaki bir değeri çarpmaa*b=210
/ bölümSol işleneni sağ işlenene bölerb/a = 2.1
% ModülSol işleneni sağ işlenene böler ve kalanını döndürürb %a = 1
** KatılımcıOperatörler üzerinde üstel hesaplama yapara ** b = 10 üzeri 20
// yuvarlama ile bölmeCinsiyet bölümü - İşlenenlerin ayrılması, burada sonuç, ondalık noktadan sonraki basamağın kaldırıldığı faktördür. Ancak işlenenlerden biri negatifse sonuç yuvarlanır, yani. sıfırdan uzaklaşır (negatif sonsuza göre):9 // 2 = 4 ve 9.0 // 2.0 = 4.0, -11 // 3 = -4, -11.0 // 3 = -4.0

Python'da Karşılaştırma Operatörleri

Karşılaştırma operatörleri her iki taraftaki değerleri ve aralarındaki ilişkiye karar verir. Bunlara ilişkisel operatörler de denir.

Bir değişken varsayalım a 10 değerini ve değişkeni içerir b 20 değerine sahipse:

ŞebekeTanımörnek
== İki işlenenin değerleri eşitse, koşul doğru olur.(a == b) doğru değil.
!= İki işlenenin değerleri eşit değilse, koşul doğru olur.(a! = b) doğrudur.
> Sol işlenenin değeri sağ işlenenin değerinden büyükse, koşul doğru olur.(a > b) doğru değildir.
< Sol işlenenin değeri sağ işlenenin değerinden küçükse, koşul doğru olur.(a< б) истинно.
> = Sol işlenenin değeri, sağ işlenenin değerinden büyük veya ona eşitse, koşul doğru olur.(a >= b) doğru değil.
<= Sol işlenenin değeri, sağ işlenenin değerinden küçük veya ona eşitse, koşul doğru olur.(a<= б) истинно.

Python'da Atama Operatörleri

Değişkenin içerdiğini varsayalım a değer 10 ve değişken b 20 değerine sahipse:

ŞebekeTanımörnek
= İşlenenlerin sağ tarafı ile işlenenin sol tarafına değerler atarc = a + b, a + b'nin değerini c'ye atar
+ = Ekle veSağ işleneni sol işlenene ekler ve sonucu sol işlenene atarc + = a, c = c + a'ya eşdeğerdir
– = çıkarma veSağ işleneni sol işlenenden çıkarır ve sonucu sol işlenene atarc – = a, c = c – a'ya eşdeğerdir
* = çarpma veSağ işleneni sol işlenenle çarpar ve sonucu sol işlenene atarc * = a, c = c * a'ya eşdeğerdir
/ = böl veSol işleneni sağ işlenene böler ve sonucu sol işlenene atarc / = a eşittir c = c / ac /= a eşittir c = c / a
% = Modül veİki işlenenli bir modulo alır ve sonucu sol işlenene atarc% = a, c = c % a'ya eşdeğerdir
** = Katılımcı veOperatörlerden üs değerlendirmesi yapar ve sol işlenenin değerini atarc**=a, c=c**a'ya eşittir
// = Kat BölümüYuvarlama ile operatör bölme işlemini gerçekleştirir ve sol işlenenin değerini atarc // = a, c = c // a'ya eşdeğerdir

Python'da bit operatörleri

Bitsel operatörler, bitler üzerinde çalışır ve işlemleri parça parça gerçekleştirir. Diyelim ki a = 60 ise; ve b = 13; Şu anda, ikili biçimde şöyle görünecekler:

—————–

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

Python'daki yerleşik bin() işlevi, bir tamsayının ikili gösterimini elde etmek için kullanılabilir.

Aşağıdaki Bit Operatörleri Python dili tarafından desteklenir:

ŞebekeTanımÖrnek
& ikili VEbit operatörünün kopyaları, sonuç olarak her iki işlenende de varlarsa(a & b) (0000, 1100 anlamına gelir)
| ikili VEYAişlenenlerden herhangi birinde varsa biti kopyalar.(a | b) = 61 (0011 1101 anlamına gelir)
^ ikili XORbir işlenende ayarlanmışsa biti kopyalar, ancak ikisinde birden değil.(a^b) = 49 (0011 0001 anlamına gelir)
~ İkili TamamlayıcıTeklidir ve "çevirme" bitinin etkisine sahiptir.(~a) = -61 (formda, imzalı ikili sayı nedeniyle çift tümleyen 1100 0011 anlamına gelir.
<< Двоичный сдвиг влево Sol işlenenin değeri, sağ işlenen tarafından belirtilen bit sayısı kadar sola taşınır.a<< = 240 (1111 означает 0000)
>> İkili sağa kaydırmaSol işlenenin değeri, sağ işlenen tarafından belirtilen bit sayısı kadar sağa taşınır.a>>=15 (0000, 1111 anlamına gelir)

Python'da Mantıksal Operatörler

Aşağıdaki mantıksal işleçler Python dili tarafından desteklenir. Değişkenin doğru olduğunu ve değişkenin b Yanlış ise:

Python'da Üye İfadeleri

Diziler, listeler veya tanımlama grupları gibi dizi üyeliği için test ifadelerinin durumu. Aşağıda açıklandığı gibi iki üye operatör vardır:

Python'da Kimlik Operatörleri

Tanımlama operatörleri, iki nesnenin bellek konumlarını karşılaştırır. Aşağıda açıklandığı gibi iki tanımlama operatörü vardır:

Python'da Öncelikli Operatörler

Aşağıdaki tablo, en yüksek öncelikten en düşüğe tüm operatörleri listeler.

Seri numarasıOperatör ve Açıklama
1 **

Üs (güç açma)

2 ~ + –

Tamamlayıcı, tekli artı ve eksi (son ikisi için yöntem adları +@ ve -@ şeklindedir)

3 * / % //

Çarpma, modulo ve bölmenin kalanı

4 + –

Toplama ve çıkarma

5 >> <<

Sağ ve sol bit kaydırma

6 &

Bitsel "ve"

7 ^ |

Bit düzeyinde özel "VEYA ve normal VEYA"

8 <= <>> =

karşılaştırma operatörleri

9 <> ==! =

eşitlik operatörleri

10 = %= /= //= -= += *= **=

atama operatörleri

11 değil

kimlik operatörleri

12 içinde değil

üyelik operatörleri

13 değil veya ve

Mantıksal operatörler

  • Tercüme

Makalenin bu bölümü, bir boole koşuluna dayalı olarak iki değerden birini seçme, rastgele sayıda işlev argümanı iletme ve alma ve ortak bir hata kaynağı - fonksiyon argümanlarının varsayılan değerlerinin olduğu gerçeğini kapsar. sadece bir kez değerlendirildi.

4. Değer seçimi

4.1. Doğru yol
2.5 sürümünden itibaren Python, "value_if_true" sözdizimini destekler. eğerÖlçek başka değer_eğer_yanlışsa". Böylece garip sözdizimine ve detaylı açıklamalara başvurmadan iki değer arasında seçim yapabilirsiniz:
test = Doğru # test = Yanlış sonuç = "Test Doğru" eğer test değilse "Test Yanlış" # sonuç = "Test Doğru"
Ne yazık ki, hala biraz çirkin. Aynı satırda bu yapıların birkaçını da kullanabilirsiniz:
test1 = Yanlış test2 = Doğru sonuç = test1 ise "Test1 Doğru" aksi takdirde "Test1 Yanlış, test2 Doğru" eğer test2 ise "Test1 ve Test2'nin ikisi de Yanlış"
İlk if/else yürütülür ve test1 = false ise ikinci if/else yürütülür. Özellikle parantez kullanırsanız daha karmaşık şeyler de yapabilirsiniz.

Bu yöntem oldukça yeni ve bu konuda karışık hislerim var. Bu doğru, anlaşılır bir yapı, hoşuma gitti... ama özellikle birden çok iç içe yapı kullanıldığında yine de çirkin. Tabii ki, değerleri seçmek için tüm püf noktalarının sözdizimi çirkin. Aşağıdaki ve/veya yöntem için zaafım var, şimdi sezgisel buluyorum, nasıl çalıştığını şimdi anlıyorum. Ayrıca, "doğru" yöntemden daha az etkili değildir.

Satır içi if/else daha yeni, daha doğru bir yol olsa da, yine de aşağıdaki noktaları okumalısınız. Python 2.5 kullanmayı planlıyor olsanız bile, bu yolları eski kodlarda göreceksiniz. Elbette, geriye dönük uyumluluk istiyorsanız, onlara bakmak gerçekten daha iyi olur.

4.2. hile ve/veya
Python'daki "ve" ve "veya" karmaşık yaratımlardır. ve birden çok ifadeye uygulamak, yalnızca Doğru veya Yanlış döndürmez. İlk yanlış ifadeyi veya hepsi doğruysa son ifadeyi döndürür. Sonuç beklenir: tüm ifadeler doğruysa, doğru olan sonuncusu döndürülür; bunlardan biri yanlışsa, boole test edildiğinde hem döndürülür hem de False'a dönüştürülür.

Benzer şekilde, or operatörü ilk gerçek değeri veya hiçbiri doğru değilse son değeri döndürür.

Bir ifadenin boole değerini kontrol ediyorsanız bu size yardımcı olmaz. Ancak ve ve veya başka amaçlar için kullanabilirsiniz. En sevdiğim yol, C ternary operatör "testine benzer bir tarzda bir değer seçmektir? eğer_doğruysa_değer:değer_yanlışsa":
test = Doğru # test = Yanlış sonuç = test ve "Test Doğru" veya "Test Yanlış" # şimdi sonuç = "Test Doğru"
Nasıl çalışır? test=true ise ve operatörü onu atlar ve kendisine verilen ikinci (son) değeri döndürür: "Test Doğru" veya"Test Yanlış" . Ayrıca, veya ilk gerçek ifadeyi döndürür, yani "Test Doğrudur".

test=yanlışsa ve testi döndürürse, test kalır veya"Test Yanlış" . Çünkü test=yanlış veya onu atlayacak ve ikinci ifade olan "Test Yanlış" ifadesini döndürecektir.

Dikkat, ortalamaya ("if_true") dikkat edin. Yanlış olarak değerlendirilirse, veya ifadesi her zaman onu atlar ve test değerinden bağımsız olarak son değeri ("if_false") döndürür.

Bu yöntemi kullandıktan sonra, doğru yol (bölüm 4.1) bana daha az sezgisel görünüyor. Geriye dönük uyumluluğa ihtiyacınız yoksa, her iki yolu da deneyin ve hangisini en çok beğendiğinizi görün. Karar veremiyorsanız, doğru olanı kullanın.

Tabii ki, Python'un önceki sürümleriyle uyumluluk istiyorsanız, "doğru" yol çalışmayacaktır. Bu durumda ve/veya çoğu durumda en iyi seçimdir.

4.3. Dizin olarak Doğru/Yanlış
İki değer arasından seçim yapmanın başka bir yolu, False == 0 ve True == 1 olduğu göz önüne alındığında, listenin dizinleri olarak True ve False kullanmaktır:
test = Doğru # test = Yanlış sonuç = ["Test Yanlış","Test Doğru"] # şimdi sonuç = "Test Doğru"
Bu yol daha adildir ve value_if_true doğru olmak zorunda değildir. Ancak önemli bir dezavantajı vardır: listenin her iki öğesi de kontrol edilmeden önce değerlendirilir. Dizeler ve diğer basit öğeler için bu bir sorun değildir. Ancak her biri büyük hesaplamalar veya G/Ç işlemleri gerektiriyorsa, her iki ifadenin de değerlendirilmesine izin verilmez. Bu nedenle, olağan yapıyı ve/veya ve/veya tercih ederim.

Ayrıca, bu yöntemin yalnızca, testin bir tür nesne değil, bir boole değeri olduğundan emin olduğunuzda çalıştığını unutmayın. Aksi takdirde, doğru çalışması için test yerine bool(test) yazmanız gerekir.

5. Fonksiyonlar

5.1. Argümanlar için varsayılan değerler yalnızca bir kez değerlendirilir
Bu bölüme bir uyarı ile başlayalım. Bu sorun ben dahil birçok programcının kafasını karıştırdı, ben sorunu çözdükten sonra bile. Varsayılan değerleri kullanarak hata yapmak kolaydır:
def işlevi(öğe, öğe = ): öğe.append(öğe) öğeleri yazdır işlevi(1) # "" yazdırır işlev(2) # "" yazdırır !!!
Bağımsız değişkenler için varsayılan değerler, işlevin tanımlandığı anda yalnızca bir kez değerlendirilir. Python, işlev her çağrıldığında bu değeri istenen değişkene atar. Ancak bu değerin değişip değişmediğini kontrol etmez. Bu nedenle, değiştirirseniz, değişiklik, işleve yapılan sonraki çağrılarda geçerli olacaktır. Önceki örnekte, malzeme listesine bir değer eklediğimizde, varsayılan değerini kalıcı olarak değiştirdik. Fonksiyonu tekrar çağırdığımızda, varsayılan değeri beklerken, değiştirilmiş olanı alırız.

Çözüm: Değişken nesneleri varsayılan olarak kullanmayın. Değiştirmezsen olduğu gibi bırakabilirsin ama bu kötü bir fikir. Önceki örneğin nasıl yazılması gerektiği aşağıda açıklanmıştır:
def işlevi(öğe, öğe = Yok): öğe Yok ise: öğe = öğe.append(item) öğeleri yazdır işlevi(1) # "" yazdırır işlev(2) # "" yazdırır beklendiği gibi
Hiçbiri değişmez değildir (zaten değiştirmeye çalışmıyoruz), bu nedenle varsayılan değeri aniden değiştirmeye karşı güvendeyiz.

Öte yandan, akıllı bir programcı bunu C'deki gibi statik değişkenleri kullanmak için bir hileye dönüştürebilir.

5.1.1. Varsayılan değerleri her seferinde hesaplanmaya zorla
İşlev kodunuzu karıştırmak istemiyorsanız, yorumlayıcının her çağrıdan önce argüman değerlerini yeniden hesaplamasını sağlayabilirsiniz. Aşağıdaki dekoratör bunu yapar:
kopyadan derin kopyayı içe aktar def resetDefaults(f): defaults = f.func_defaults def resetleyici(*args, **kwds): f.func_defaults = deepcopy(varsayılanlar) return f(*args, **kwds) resetleyici.__name__ = f. __name__ dönüş sıfırlayıcı
Beklenen sonuçları elde etmek için bu dekoratörü bir işleve uygulamanız yeterlidir:
@resetDefaults # dekoratör def işlevini(item, malzeme = ) bu şekilde uygularız: stuff.append(item) öğeleri yazdır işlevi(1) # yazdırır "" işlev(2) # yazdırır "" beklendiği gibi
5.2. Değişken sayıda argüman
Python, işlevlerde isteğe bağlı sayıda argüman kullanmanıza izin verir. Önce gerekli argümanlar (varsa) tanımlanır, ardından değişken bir yıldız işareti ile belirtilmelidir. Python ona kalan (adsız) argümanlar listesinin değerini verecektir:
def do_something(a, b, c, *args): print a, b, c, args do_something(1,2,3,4,5,6,7,8,9) # prints "1, 2, 3, (4, 5, 6, 7, 8, 9)"
Bu neden gerekli? Örneğin, bir fonksiyon birkaç eleman almalı ve onlarla aynı şeyi yapmalıdır (örneğin, ekleme). Kullanıcıyı şu fonksiyona bir liste iletmeye zorlayabilirsiniz: sum_all(). Ve rastgele sayıda argümanın iletilmesine izin verebilirsiniz, ardından daha temiz kod alırsınız: sum_all(1,2,3).

Bir fonksiyon ayrıca değişken sayıda adlandırılmış argümana sahip olabilir. Diğer tüm argümanları tanımladıktan sonra, başında "**" ile değişkeni belirtin. Python, bu değişkene, gerekli olanlar dışında, alınan adlandırılmış argümanların bir sözlüğünü atayacaktır:
def do_something_else(a, b, c, *args, **kwargs): a, b, c, args, kwargs yazdır do_something_else(1,2,3,4,5,6,7,8,9, zaman aşımı=1,5 ) # çıkışlar "1, 2, 3, (4, 5, 6, 7, 8, 9), ("zaman aşımı": 1.5)"
Bunu neden yap? Bence en yaygın neden, bir işlevin başka bir işlev(ler) için bir sarmalayıcı olması ve kullanılmayan adlandırılmış argümanların başka bir işleve geçirilebilmesidir (bkz. 5.3).

5.2.1. Açıklama
Adlandırılmış argümanlar ve onlardan sonra rastgele sayıda normal argüman kullanmak, görünüşe göre mümkün değildir, çünkü adlandırılmış argümanlar "*" parametresinden önce tanımlanmalıdır. Örneğin, bir fonksiyon düşünelim:
def do_something(a, b, c, fact_print = True, *args): if fact_print: a, b, c, args yazdır
Bir sorunumuz var: birkaç isimsiz argüman iletmemiz gerekirse, aslında_print isimli argümanı iletmek işe yaramayacak. Aşağıdaki seçeneklerin her ikisi de bir hata üretecektir:
do_something(1, 2, 3, 4, 5, fact_print = True) # aslında_print önce 4'e ayarlanır (nedenini anlıyor musunuz?) ve ardından # geçersiz kılınarak TypeError'a ("anahtar kelime bağımsız değişkeni için birden çok değer var") neden olur do_something(1, 2, 3, fact_print = True, 4, 5, 6) # Adlandırılmış bağımsız değişkenler normal olanlardan önce gelemez. Bir SyntaxError oluşur. Bu durumda fact_print'i ayarlamanın tek yolu, onu normal bir argüman olarak iletmektir: do_something(1, 2, 3, True, 4, 5, 6) # sonuç: "1, 2, 3, (4, 5, 6 )"
Bu durumda fact_print'i ayarlamanın tek yolu, onu normal bir argüman olarak iletmektir:
do_something(1, 2, 3, True, 4, 5, 6) # sonuç: "1, 2, 3, (4, 5, 6)"
5.3. Bir Listeyi veya Sözlüğü Birden Çok Argüman Olarak Geçirme
Geçilen argümanları liste veya sözlük olarak almak mümkün olduğundan, fonksiyon argümanlarını bir liste veya sözlükten de iletebilmeniz şaşırtıcı değildir. Sözdizimi önceki paragraftakiyle tamamen aynıdır, listenin önüne bir yıldız işareti koymanız gerekir:
args = pow(*args) #, pow(5,2) döndürür, yani 25
Ve (daha sık kullanılan) sözlük için iki yıldız işareti koymanız gerekir:
def do_something(actually_do_something=Doğru, print_a_bunch_of_numbers=Yanlış): if fact_do_something: print "Bir şey yapıldı" # if print_a_bunch_of_numbers: print range(10) kwargs = ("actually_do_something": True, "print_a_numbers": True, "print_a_number kwargs) # "Bir şey yapıldı" ve ardından "" yazdırır
Tarihsel referans: Python'da sürüm 2.3'ten önce, bu amaç için yerleşik işlev application (function, arg_list, keyword_arg_dict) kullanıldı.

26 10.2017

Belirli sayılar veya işlevlerle etkileşim kurmak için bazı işlemler gereklidir. Toplama, çıkarma, çarpma, bölme diyelim. Örneğin, aritmetik kök ve üs alma. Python deyimleri önemlidir. Onlar olmadan, hiçbir program olmazdı. Ve mevcut tüm operatörleri listelemek için tam bir bölüm tahsis edilmiştir.

Bu makaleden öğreneceksiniz:

Herkese merhaba, okuyucular, konuklar ve arkadaşlar, Gridin Semyon sizlerle. Geçenlerde abonelerim arasında küçük bir isimsiz anket yaptım. Veritabanımda 35 abonem var. Mektupların sadece yarısı okundu ve ankete sadece üç kişi yanıt verdi. Ama biliyorsun, bu benim için çok büyük bir sonuç. Hala tek bir yerde durmamanız güzel.

Aslında blogun gelişimi hakkında birçok fikrim ve düşüncem var. Uzun zamandır PLC ve Raspberry PI tabanlı ev yapımı ürünler hakkında bir bölüm açmayı planlıyorum. Sadece projelerimi değil sitede yayınlamak istiyorum. Ama aynı zamanda diğer yazarların projeleri, kesinlikle parasal bir ödül ve sosyal olarak doğrudan bir bağlantı için. ağlar.

Aşağıdaki bölümleri açacağım:

  • Robotik alanında haberler;
  • Quadcopterler;
  • Kütüphaneler;
  • Robot mekaniği;

Yarışmalar, yarışmalar... Herkes ödülleri, ikramiyeleri ve hediyeleri sever. Ben de çok seviyorum ama hiçbir yere katılmadım. Henüz böyle bir vaka olmadı. Yarışmalar düzenlediğinizden emin olun.

1. nokta hala başarısız. Kaliteli makaleler yazmak zaman alır. Her şeyi optimize etmek ve zamanında uyum sağlamak mümkün olana kadar.

Aslında çok farklı konular var. Konu çok yönlü ve kapsamlı. Yavaş yavaş kucaklayacağız. Ve pratik örneklere bakın. Ben daha pratikim.

Biliyor musun, kaynağımın işe yaramaz olmaması çok güzel. Biri için bir şeyler yapmış olmak çok hoş bir duygu. Bu, sitede çalışmak ve devam etmek için çok motive edici. arkadaşlar da teşekkür ederim. Önümüzdeki birkaç yıl boyunca siteyi güncel tutmaya çalışıyorum.

Operatör nedir?

Operatörler, bazı özel eşlemeler ve sayılarla yapılan işlemler veya bir işleve başka bir işlev atama olarak anlaşılır. Basit bir ifadeyle, 4 + 5 \u003d 9 ifadesinde. Sayılara işlenenler ve "+" ve "=" operatörleri denir. Eh, genel olarak, böyle bir şey.

Dilde birkaç tür vardır. Eh, diğer herhangi bir dilde olduğu gibi.

  1. aritmetik operatörler;
  2. karşılaştırma operatörleri (karşılaştırma veya ilişkisel operatörler);
  3. atama operatörleri
  4. mantıksal operatörler;
  5. bitsel operatörler
  6. üyelik operatörleri;
  7. kimlik operatörleri.

Aritmetik operatörler

ŞebekeTanımÖrnekler
+ Toplama - Operatörün soluna ve sağına değerleri ekler15 + 5, 20 ile sonuçlanır
20 + -3 17 ile sonuçlanır
13.4 + 7, 20.4 ile sonuçlanır
Çıkarma - Sağ işleneni soldan çıkarır15 - 5, 10 ile sonuçlanır
20 - -3 ile sonuçlanacak 23
13.4 - 7, 6.4 ile sonuçlanır
* Çarpma - İşlenenleri çarpma5 * 5, 25 ile sonuçlanır
7 * 3.2, 22.4 ile sonuçlanır
- 3 * 12, -36 ile sonuçlanır
/ Bölme — Sol işleneni sağa böler15 / 5 3 ile sonuçlanır
5 / 2, 2 ile sonuçlanır (Python 2.x sürümünde iki tamsayıyı bölerken sonuç bir tamsayı olacaktır)
5.0 / 2, 2.5 ile sonuçlanır ("Doğru" sonucu elde etmek için en az bir işlenen bir kayan nokta olmalıdır)
% Modulo - Sol işleneni sağ işlenene böler ve kalanı döndürür.%6 2, 0 ile sonuçlanacak
%7 2, 1 ile sonuçlanır
%13,2 3,2 üzerinden 5
** Üs - sol işleneni sağın gücüne yükseltir5 ** 2, 25 ile sonuçlanır
2 ** 3, 8 ile sonuçlanır
- 3 ** 2, -9 ile sonuçlanır
// Tamsayı bölümü — Sonucun yalnızca tamsayı kısmının döndürüldüğü bir bölüm. Virgülden sonraki kısım atılır.12 // 5, 2 ile sonuçlanır
4 // 3, 1 ile sonuçlanır
25 // 6, 4 ile sonuçlanır

Karşılaştırma Operatörleri

ŞebekeTanımÖrnekler
== Her iki işlenenin de eşit olup olmadığını kontrol eder. Evet ise, o zaman koşul gerçek olur.5 == 5, True ile sonuçlanacak
True == False, False ile sonuçlanır
"merhaba" == "merhaba" True ile sonuçlanacak
!= 12 != 5 True ile sonuçlanacak
False != False, False ile sonuçlanır
"merhaba" != "Merhaba" True ile sonuçlanacak
<> Her iki işlenenin de eşit olup olmadığını kontrol eder. Değilse, o zaman koşul gerçek olur.12 <>5 True ile sonuçlanacaktır. Bir operatöre benziyor!=
> Sol işlenenin değerinin sağ işlenenin değerinden büyük olup olmadığını kontrol eder. Evet ise, o zaman koşul gerçek olur.5 > 2 True ile sonuçlanır.
Doğru > Yanlış, Doğru ile sonuçlanır.
"A" > "B" False ile sonuçlanır.
< Sol işlenenin değerinin sağ işlenenin değerinden küçük olup olmadığını kontrol eder. Evet ise, o zaman koşul gerçek olur.3 < 5 в результате будет True.
Doğru< False в результате будет False.
"A"< «B» в результате будет True.
>= Sol işlenenin değerinin sağ işlenenin değerinden büyük veya ona eşit olup olmadığını test eder. Evet ise, o zaman koşul gerçek olur.1 >= 1, True ile sonuçlanır.
23 >= 3.2, True ile sonuçlanır.
"C" >= "D" False ile sonuçlanır.
<= Sol işlenenin değerinin sağ işlenenin değerinden küçük veya ona eşit olup olmadığını test eder. Evet ise, o zaman koşul gerçek olur.4 <= 5 в результате будет True.
0 <= 0.0 в результате будет True.
— 0.001 <= -36 в результате будет False.

atama operatörleri

ŞebekeTanımÖrnekler
= Sağ işlenenin değerini sola atar.c = 23, c değişkenine 23 değerini atayacaktır.
+= Sağ işlenenin değerini sol işlenene ekleyin ve bu toplamı sol işlenene atayın.c = 5
bir = 2
c += a şuna eşittir: c = c + a. c 7'ye eşit olacak
-= Sağ işlenenin değerini sol işlenenden çıkarır ve sonucu sol işlenene atar.c = 5
bir = 2
c -= a şuna eşittir: c = c - a. c 3'e eşit olacak
*= Sağ işleneni sol işlenenle çarpar ve sonucu sol işlenene atar.c = 5
bir = 2
c *= a şuna eşittir: c = c * a. c 10'a eşit olacak
/= Sol işleneni sağ işlenene böler ve sonucu sol işlenene atar.c = 10
bir = 2
c /= a şuna eşittir: c = c / a. c 5'e eşit olacak
%= İşlenenleri modüle edin ve sonucu sola atayın.c = 5
bir = 2
c % = a şuna eşittir: c = c % a. c 1'e eşit olacak
**= Sol işleneni sağ işlenenin gücüne yükseltir ve sonucu sol işlenene atar.c = 3
bir = 2
c **= a şuna eşittir: c = c ** a. c 9'a eşit olacak
//= Sol işlenenin sağ tarafından tamsayıya bölünmesini gerçekleştirir ve sonucu sol işlenene atar.c = 11
bir = 2
c //= a şuna eşittir: c = c // a. c 5'e eşit olacak

Bitsel Operatörler

Bilgisayar bilimi dersleri almamış olanlar için. a=60 ve b=13 olmak üzere iki sayımız olduğunu düşünün. İkili sistemde şöyle görünecekler: a=0011 1100 ve b=0000 1101.

Sonunda onlarla ne yapılabilir?

ŞebekeTanımÖrnekler
& İkili "VE" operatörü, yalnızca bit her iki işlenende de mevcutsa sonuca biraz kopyalar.(a & b) bize 12'yi verecek, ki bu ikili sistemde 0000 1100 gibi görünüyor
| İkili "VEYA" operatörü, en az bir işlenende mevcutsa biraz kopyalar.(a | b) bize 61 verecek, ikili 0011 1101
^ İkili XOR operatörü, bit her ikisinde değil, yalnızca işlenenlerden birinde mevcutsa biraz kopyalar.(a^b) bize ikili kod 0011 0001'de 49 verecek
~ İkili tamamlayıcı operatör. Teklidir (yani, yalnızca bir işlenene ihtiyaç duyar), bitleri tersine çevirir, bir olduğu yerde sıfır olur ve bunun tersi de geçerlidir.(~a) -61 ile sonuçlanır ve bu, ikili sistemde 1100 0011 gibi görünür.
<< Biraz sola kaydır. Sol işlenenin değeri, sağ işlenende belirtilen bit sayısı kadar sola "kaydırılır".a<< 2 в результате даст 240, в двоичном формате 1111 0000
>> Biraz sağa kaydır. Sol işlenenin değeri, sağ işlenende belirtilen bit sayısı kadar sağa "kaydırılır".a >> 2 ikili olarak 15 verecek, 0000 1111

Mantıksal operatörler

Üyelik Operatörleri

Bu operatörler, kompozitlerdeki (dizeler, demetler, listeler ve sözlükler) tek tek öğeleri test etmek için gereklidir.

kimlik operatörleri

Operatör Önceliği

ŞebekeTanım
** üs alma
~ + — ücretsiz operatör
* / % // Çarpma, bölme, modulo, tamsayılı bölme.
+ — Toplama ve çıkarma.
>> << Bit düzeyinde sağa kaydırma ve bit düzeyinde sola kaydırma.
& İkili "Ben".
^ | İkili "Özel VEYA" ve ikili "VEYA"
<= < > >= Karşılaştırma Operatörleri
<> == != Eşitlik Operatörleri
= %= /= //= -= += *= **= atama operatörleri
değil Kimlik Operatörleri
içinde değil Üyelik Operatörleri
değil veya ve Mantıksal operatörler

İşte böyle küçük bir operatör listesi. Python'da programlama yaparken bu sayfa referansınız olsun.

Geçenlerde I.V.'den bir kitap aldım. Petrov "Otomatik sistemlerde programlanabilir kontrolörler". Çok şey yazıyor gibiyim ama yine de bir profesyonel gibi hissetmiyorum:

Bir şekilde projemden vazgeçmenin ve projemi bırakmanın eşiğindeydim. Bir şeyler yapmak için motivasyon arardım. Bütün eylemlerde anlam arıyordum, düşündüm, sonunda bana ne sonuç verecek? Ve yine motivasyon arıyor ...

Neden ben, şimdi yine aptalca klavyeye tıklayıp monitöre bakıyorum. Ve yazıyı tekrar yazdım, bu satırları bazen neden ve neden bilmeden yazıyorum, bu beni eninde sonunda nereye götürecek?

Evet, zorluklarım var, evet, yolunda gitmeyen çok şeyim var. Ama onunla savaşmalısın.

Biliyor musun, yaptığın şeye göre kafayı bulman gerekiyor, hala bir kez yaşıyoruz.

Motivasyon hakkında bir kez daha, George Carlin'in bu konuda ne dediğine bakın, küfür için özür dilerim.

Saygılarımla, Gridin Semyon

Önceden düşünülen tüm programlar doğrusal bir yapıya sahipti: tüm talimatlar sırayla birer birer yürütüldü, her yazılı talimat mutlaka yürütüldü.

Verilen bir x sayısı için mutlak değerini (modülü) belirlemek istediğimizi varsayalım. Program, x>0 ise x değişkeninin değerini, aksi takdirde -x değerini yazdırmalıdır. Programın doğrusal yapısı ihlal edilmiştir: x>0 koşulunun geçerliliğine bağlı olarak bir veya diğer değer çıkarılmalıdır. İlgili Python program parçası şöyle görünür:

273 x = int(input()) x > 0 ise: print(x) yoksa: print(-x)

Bu program bir if ifadesi kullanır. if kelimesinden sonra, kontrol edilecek koşul (x > 0) belirtilir ve iki nokta üst üste ile biter. Bunu, koşul doğruysa yürütülecek bir komut bloğu (dizisi) takip eder, örneğimizde bu, x değerinin gösterimidir. Ardından, iki nokta üst üste ile biten else (aksi takdirde) kelimesi gelir ve test edilen koşul yanlışsa yürütülecek bir ifade bloğu, bu durumda -x yazdırılacaktır.

Bu nedenle, Python'daki bir koşullu ifade aşağıdaki sözdizimine sahiptir:

If Koşul: İfade bloğu 1 else: İfade bloğu 2

Koşul doğruysa deyim bloğu 1 yürütülür. Koşul yanlışsa, İfade Bloğu 2 yürütülür.

Koşullu ifade, else kelimesini ve sonraki bloğu atlayabilir. Böyle bir talimata eksik dal denir. Örneğin, bir x sayısı verilmişse ve onu x'in mutlak değeriyle değiştirmek istiyorsak, bu şu şekilde yapılabilir:

273 x = int(input()) eğer x< 0: x = -x print(x)

Bu örnekte x, -x olarak ayarlanacaktır, ancak yalnızca x<0 . А вот инструкция print(x) будет выполнена всегда, независимо от проверяемого условия.

Girinti, Python'da bir if veya else ifadesiyle ilgili bir ifade bloğunu vurgulamak için kullanılır. Aynı bloğa ait tüm ifadeler, aynı miktarda girintiye, yani satırın başında aynı sayıda boşluğa sahip olmalıdır. 4 boşluklu girinti kullanılması tavsiye edilir ve girinti olarak sekme karakteri kullanılması önerilmez.

Bu, Python'un sözdizimi ile blokların özel kelimelerle ayırt edildiği çoğu dilin sözdizimi arasındaki önemli farklardan biridir, örneğin, Idol'de nts ... kts, Pascal'da start ... end veya C'de küme parantezleri .

2. İç içe koşullu ifadeler

Koşullu ifadelerin içinde, koşullu ifade de dahil olmak üzere herhangi bir Python dili talimatını kullanabilirsiniz. Yuvalanmış bir dal elde ederiz - program yürütme sırasında bir çataldan sonra başka bir çatal belirir. Bu durumda, iç içe bloklar daha büyük bir girinti boyutuna sahiptir (örneğin, 8 boşluk). Bunu, sıfır olmayan x ve y sayıları verildiğinde, (x, y) noktasının koordinat düzleminin çeyreğinin hangisinde bulunduğunu belirleyen bir program örneğinde gösterelim:

2 -3 x = int(input()) y = int(input()) eğer x > 0 ise: y > 0 ise: # x > 0, y > 0 print("İlk Çeyrek") başka: # x > 0 ,y< 0 print("Четвертая четверть") else: if y >0:#x< 0, y >0 print("İkinci Çeyrek") başka: # x< 0, y < 0 print("Третья четверть")

Bu örnekte yorumları kullandık - yorumlayıcının yok saydığı metin. Python'da yorumlar # sembolüdür ve bu sembolden sonra satırın sonuna kadar olan tüm metinlerdir.

3. Karşılaştırma operatörleri

Kural olarak, aşağıdaki karşılaştırma operatörlerinden birinin değerlendirilmesinin sonucu bir test koşulu olarak kullanılır:< Меньше — условие верно, если первый операнд меньше второго.
> Büyüktür - koşul, ilk işlenen ikinciden büyükse doğrudur.
<= Меньше или равно.
>= Büyüktür veya eşittir.
== Eşitlik. İki işlenen eşitse koşul doğrudur.
!= Eşitsizlik. İki işlenen eşit değilse koşul doğrudur.

Örneğin, koşul (x * x< 1000) означает “значение x * x меньше 1000”, а условие (2 * x != y) означает “удвоенное значение переменной x не равно значению переменной y ”.

Python'daki karşılaştırma operatörleri zincirlenebilir (bunun için mantıksal bağlaçlar kullanmanız gereken diğer programlama dillerinin çoğundan farklı olarak), örneğin, a == b == c veya 1<= x <= 10 .

4. bool veri türü

Karşılaştırma operatörleri, özel bool türünün değerlerini döndürür. Boole değerleri iki değerden birini alabilir: True (true) veya False (false). Boolean True'u int'ye dönüştürürseniz 1 elde edersiniz ve False'ı 0'a dönüştürürsünüz. Geri dönüştürdüğünüzde, 0 sayısı False'a ve sıfır olmayan herhangi bir sayı True'a dönüştürülür. str'yi bool'a dönüştürürken, boş dize False'a ve boş olmayan herhangi bir dize True'a dönüştürülür.

4.1. Mantıksal operatörler

Bazen bir değil, aynı anda birkaç koşulu kontrol etmeniz gerekir. Örneğin, belirli bir sayının (n % 2 == 0) koşulunu kullanıp kullanmadığını (n'yi 2'ye bölmenin geri kalanı 0'dır) ve verilen iki n ve m tamsayısının çift olup olmadığını kontrol etmeniz gerekip gerekmediğini kontrol edebilirsiniz. , her iki koşulun da geçerliliğini kontrol etmeniz gerekir: n % 2 == 0 ve m % 2 == 0 , bunlar için operatör kullanılarak birleştirilmeleri gerekir ve (mantıksal VE): n % 2 == 0 ve m % 2 == 0 .

Python'da standart mantıksal operatörler vardır: mantıksal VE, mantıksal VEYA, mantıksal olumsuzlama.

Mantıksal AND ikili bir işleçtir (yani iki işlenene sahip bir işleçtir: sol ve sağ) ve ve biçimine sahiptir. and operatörü, ancak ve ancak işlenenlerinin her ikisi de True ise True döndürür.

Mantıksal OR bir ikili işleçtir ve ancak ve ancak en az bir işlenen True ise True döndürür. "Mantıksal VEYA" operatörü veya biçimine sahiptir.

Mantıksal NOT (olumsuzlama) bir tekli (yani tek işlenenli) bir işleçtir ve ardından tek bir işlenenin gelmediği biçimdedir. Mantıksal DEĞİL, işlenen False ise True döndürür ve bunun tersi de geçerlidir.

Örnek. a veya b sayılarından en az birinin 0 ile bitip bitmediğini kontrol edelim:

15 40 a = int(input()) b = int(input()) eğer a % 10 == 0 veya b % 10 == 0: print("EVET") yoksa: print("HAYIR")

a sayısının pozitif ve b'nin negatif olmadığını kontrol edelim:

a > 0 ise ve değilse (b< 0):

Veya yapmamak yerine yapabilirsiniz (b< 0) записать (b >= 0) .

5. Basamaklı koşullu talimatlar

Koordinat düzleminin dörtte birini tanımlayan örnek bir program, if... elif... else işlemiyle bir "kaskad" dizisi kullanılarak yeniden yazılabilir:

5 7 x = int(input()) y = int(input()) eğer x > 0 ve y > 0 ise: print("İlk Çeyrek") elif x > 0 ve y< 0: print("Четвертая четверть") elif y >0: print("İkinci Çeyrek") else: print("Üçüncü Çeyrek")

Böyle bir yapıda, if , ..., elif koşulları sırayla kontrol edilir, gerçek koşullardan ilkine karşılık gelen blok yürütülür. Kontrol edilen tüm koşullar yanlışsa, varsa, else bloğu yürütülür.