Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSenior Deep-DivesModule 10 · Production idioms (modern Python)typing.Never + assert_never — exhaustiveness checks the compiler enforcespredict147 / 161
+150 XP
Sarcină
📝 **Sarcina:** Preziceți ieșirea cu 5 linii. Un Color StrEnum are 3 variante. `describe_all` este exhaustiv (fiecare variantă gestionată); `describe_partial` tratează doar RED. Urma: describe_all pe toate cele 3 variante reușește și imprimă 3 rânduri; descrie_parțială pe roșu imprimă `cald`; describe_partial pe GREEN ajunge la ramura assert_never și generează AssertionError, pe care încercarea externă o prinde. 📋 Implementați funcția de mai sus. Testele rulează automat. 💡 **Sugestie:** Recitiți teoria dacă rămâneți blocat.
Prezice ieșirea

Citește codul cu atenție

from typing import assert_never
from enum import StrEnum


class Color(StrEnum):
    RED = "red"
    GREEN = "green"
    BLUE = "blue"


def describe_all(c: Color) -> str:
    match c:
        case Color.RED: return "warm"
        case Color.GREEN: return "fresh"
        case Color.BLUE: return "cool"
        case _: assert_never(c)


def describe_partial(c: Color) -> str:
    match c:
        case Color.RED: return "warm"
        case _: assert_never(c)


for c in Color:
    print(describe_all(c))

print(describe_partial(Color.RED))

try:
    describe_partial(Color.GREEN)
except Exception as e:
    print(f"{type(e).__name__} raised")

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…