Poređenje i logičke vrednosti
Relacijski operatori porede dve vrednosti: == (jednako), != (različito), <, >, <= (manje ili jednako) i >= (veće ili jednako). Rezultat poređenja je logička vrednost, True (tačno) ili False (netačno), pa print(7 > 4) ispisuje True. Jedan znak = je dodela i ništa ne poredi; u uslovu se uvek piše ==. Granica je česta zamka: „bar 5“ znači 5 ili više, pa je uslov k >= 5, a ne k > 5. Niske su jednake samo ako su potpuno iste, uključujući velika i mala slova, a niska "5" i broj 5 nisu jednaki. Zato program koji unos učita samo sa input i poredi ga sa brojem 5 nikad ne nađe jednakost.
if, else i elif
Grananje počinje rečju if, posle koje dolaze uslov i dvotačka. Redovi uvučeni ispod tog reda pripadaju grani i izvršavaju se samo kada je uslov tačan; prvi neuvučeni red je van grananja i izvršava se uvek. Bez grane else, ako uslov nije tačan, blok se jednostavno preskoči. Potpuni oblik if-else ima dva ishoda i izvršava tačno jednu granu: else se izvršava kada je uslov netačan. Za više ishoda koristi se if-elif-else: uslovi se proveravaju odozgo i izvršava se samo prva tačna grana, a ostale se preskaču. Zato je redosled uslova važan: kada je prvi uslov p >= 50, program nikad ne stigne do p >= 90. Dva odvojena if-a, bez elif, proveravaju se nezavisno.
Logički operatori and, or i not
Logički operatori spajaju ili okreću logičke vrednosti. Izraz sa and (i) tačan je samo kada su oba dela tačna, izraz sa or (ili) kada je bar jedan deo tačan, a not (ne) okreće vrednost, pa je not True jednako False. Uslov da je x između 10 i 20, uključujući granice, piše se kao x >= 10 and x <= 20 ili kraće 10 <= x <= 20. Da je broj van intervala proverava se sa or: x < 0 or x > 100. Sa and taj uslov nikad ne bi bio tačan, a sa or umesto and u uslovu za interval prošao bi skoro svaki broj. Kao što množenje ima prednost nad sabiranjem, tako and ima prednost nad or.