From 0112bbacff866f6c8004745ec3af4134653627b6 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Tue, 12 Nov 2019 22:45:48 +0100 Subject: [PATCH] =?UTF-8?q?=C5=98e=C5=A1en=C3=AD=20=C4=8Desk=C3=BDch=20?= =?UTF-8?q?=C4=8D=C3=ADsel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06-rezy/ceska-cisla.py | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 06-rezy/ceska-cisla.py diff --git a/06-rezy/ceska-cisla.py b/06-rezy/ceska-cisla.py new file mode 100755 index 0000000..9c7e1ca --- /dev/null +++ b/06-rezy/ceska-cisla.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 + +zakladni = [ + None, "jedna", "dva", "tři", "čtyři", + "pět", "šest", "sedm", "osm", "devět", + "deset", "jedenáct", "dvanáct", "třináct", "čtrnáct", + "patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct" +] + +desitky = [ + None, None, "dvacet", "třicet", "čtyřicet", + "padesát", "šedesát", "sedmdesát", "osmdesát", "devadesát" +] + +def cesky(x): + # Zde se postupně skládají slova výsledku + out = [] + + # Vybere správný tvar slova odpovídající počtu: [1, 2-4, 5+] + def ohybej(x, var): + if x == 1: + i = 0 + elif x <= 4: + i = 1 + else: + i = 2 + out.append(var[i]) + + # Zpracuje čísla v rozsahu 1 až 999 + def stovky(y): + if y >= 100: + s, y = y // 100, y % 100 + if s == 2: + # 200 má zcela speciální tvar + out.append("dvě") + out.append("stě") + else: + if s > 1: + out.append(zakladni[s]) + ohybej(s, ["sto", "sta", "set"]) + if y >= 20: + d, y = y // 10, y % 10 + out.append(desitky[d]) + if y > 0: + out.append(zakladni[y]) + + if x == 0: + return "nula" + + if x >= 1000000000: + return "moc" + + # Miliony + if x >= 1000000: + m, x = x // 1000000, x % 1000000 + if m > 1: + stovky(m) + ohybej(m, ["milion", "miliony", "milionů"]) + + # Tisíce + if x >= 1000: + t, x = x // 1000, x % 1000 + if t > 1: + stovky(t) + ohybej(t, ["tisíc", "tisíce", "tisíc"]) + + # Zbytek + stovky(x) + return " ".join(out) + +# Testovací program +while True: + print(cesky(int(input()))) -- GitLab