Utilizator anonim
Mai mult
Python's echivalente de && (logic-și) în cazul în care o declarație
Aici's codul meu:
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
Am'm obtinerea o eroare în CAZUL în care condiționată. Ce fac gresit?
761
10
Ce-ar vrea " și " în loc de
&&
.Python folosește " și " și " sau " condiționale.
de exemplu
Două comentarii:
Acolo motivul pentru care ai SyntaxError
este că nu există nici
&&operator în Python. De asemenea,
| |și
!` sunt nu este valabil operatorii de Python.Unii dintre operatorii știți din alte limbi au un nume diferit în Python. Operatorii logici
&& " și "| |
sunt de fapt numite " și " și "sau". De asemenea logic de negație operatorul!
este numitnu
.Deci, ai putea scrie:
sau chiar:
Unele informații suplimentare (care ar putea veni la îndemână):
M-am rezumat operatorul "echivalent" în acest tabel:
A se vedea, de asemenea, Piton documentație: 6.11. Operațiunile de booleene.
Pe lângă operatorii logici Python are, de asemenea, la nivel de bit/binar operatori:
Nu există nici o negare la nivel de bit în Python (doar la nivel de bit inversul operatorului
~
- dar asta este nu echivalent cu "nu").A se vedea, de asemenea, 6.6. Unar aritmetică și la nivel de bit/binar operations și 6.7. Binar operații aritmetice.
Operatorii logici (ca și în multe alte limbi) au avantajul că acestea sunt scurt-circuitat. Asta înseamnă că, dacă primul operand deja definește rezultatul, apoi cel de-al doilea operator de e't evaluate la toate.
Pentru a arăta acest lucru am utilizat o funcție care pur și simplu are o valoare, se imprimă și se întoarce din nou. Acest lucru este la îndemână pentru a vedea ce este de fapt evaluate pentru a imprima declarații:
După cum puteți vedea doar o amprentă declarație este executat, astfel încât Python-am't se uite chiar și la dreptul de operand.
Acest lucru nu este cazul pentru binar operatori. Cei evalua întotdeauna ambii operanzi:
Dar dacă primul operand este't suficient, atunci, desigur, cel de-al doilea operator este evaluat:
Pentru a rezuma, aceasta de aici este un alt Tabel:
Adevărat
șiFals
reprezintă ceea cebool(partea stângă)
întoarce, ei nu't trebuie să fie "Adevărat" sau "Fals", au nevoie doar pentru a returna "True" sau "False" atunci cândbool
este numit pe ele (1).Deci, în Pseudo-Cod(!) "și" și " sau " funcții de lucru ca acestea:
Rețineți că acest lucru este pseudo-cod cod Python. În Python nu puteți crea funcții numite " si " sau "sau", deoarece acestea sunt cuvinte cheie. De asemenea, niciodată nu ar trebui să utilizați "evaluarea" sau dacă bool(...)`.
Personalizarea comportamentului propriile clase
Acest implicite
bool
apel pot fi folosite pentru a personaliza modul în clase se comporte cu "și", " sau " și "nu".Pentru a arăta cum pot fi personalizate eu folosesc această clasă care, din nou, `print ceva pentru a urmări ceea ce se întâmplă:
Deci sa's vedem ce se întâmplă cu clasa în combinație cu acești operatori:
Dacă tu nu't au o
__bool__
metoda atunci Python verifică, de asemenea, în cazul în care obiectul are o__len__
metoda și dacă se întoarce o valoare mai mare decât zero. Care ar putea fi util să știți în cazul în care creați o secvență container.A se vedea, de asemenea, 4.1. Valoare de adevăr Testarea.
NumPy tablouri și subclase
Probabil, un pic dincolo de domeniul de aplicare de întrebarea inițială, dar în cazul în care te're de-a face cu NumPy tablouri sau subclase (cum ar fi Panda Serie sau DataFrames), atunci implicit
bool
sun va ridica temutValueError
:În aceste cazuri, aveți posibilitatea să utilizați logică și funcția de ** din NumPy care efectuează un element-înțelept " și "(sau, "sau"):
Daca're de-a face doar cu boolean tablouri ai putea folosi, de asemenea, binar operatorii cu NumPy, aceste efectua element-înțelept (dar, de asemenea, binare) comparații:
(1)
Că
bool
apel la operanzi trebuie să se întoarcăAdevărat
sauFals
e't complet corecte. L's doar primul operand, care trebuie să se întoarcă un boolean din it's__bool__
metoda:Ca's, pentru că " și "de fapt, se întoarce primul operand dacă primul operand are valoarea "False" și dacă se evaluează la "Adevărat", apoi se întoarce cel de-al doilea operand:
În mod similar pentru " sau " dar tocmai invers:
Cu toate acestea, dacă utilizați-le într-un "dacă" declarație "dacă" va, de asemenea, implicit apel `bool pe rezultat. Deci, aceste puncte fine nu pot fi relevante pentru tine.
M-am dus cu un purlely matematică soluție:
Utilizați " și " și " sau " pentru a efectua operații logice ca în C, C++. Ca literalmente
și
e&&
șisau
este||
.Să ia o privire la acest joc distractiv de exemplu,
Dacă vrei să construiești Porți Logice în Python:
Acum incearca sa-i suni:
Acest lucru va genera:
Sper că acest lucru vă ajută!
Probabil că acest lucru nu este cel mai bun cod pentru această sarcină, dar este de lucru -
Utilizarea "și" în condiționate. Eu folosesc de multe ori acest lucru atunci când importă în Jupyter Notebook:
O singur
&
(nu dublu&&
) este suficient sau ca răspunsul de sus sugerează puteți utiliza 'si'. De asemenea, am găsit asta în pandadacă vom înlocui "&" cu "și", va't de lucru.
poate cu & în loc % este mult mai rapid și menținerea lizibilitate
alte teste/impar
x este chiar ? x % 2 == 0
x este impar ? nu x % 2 == 0
poate este mai clar, cu nivel de bit și 1
x este impar ? x & 1
x este chiar ? nu x & 1 (nu ciudat)