Advertisement
PrezesSmoku

Kalkulator_roz

May 12th, 2023
752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.50 KB | None | 0 0
  1. zero = ["0","zero", "zera", "zerem"]
  2. jednen = ["1","jeden", "jedynka", "jedynkę"]
  3. dwa = ["2", "dwa", "dwójkę", "dwójka"]
  4. trzy = ["3", "trzy", "trójkę", "trójka"]
  5. cztery = ["4", "cztery", "czwórkę", "czwórka"]
  6. piec = ["5", "pięć", "piątkę", "piątka"]
  7. szesc = ["6", "sześć", "szóstkę", "szóstka"]
  8. siedem = ["7", "siedem", "siódemkę", "siódemka"]
  9. osiem = ["8", "osiem", "ósemkę", "ósemka"]
  10. dziewiec = ["9", "dziewięć", "dziewiątkę", "dziewiątka"]
  11. dziesiec = ["10", "dziesięć", "dziesiątka", "dziesiątkę", "dychę"]
  12. jedenascie = ["11","jedenaście", "jedenastkę", "jedenastu"]
  13. dwanascie = ["12", "dwanaście", "dwunastu", "dwunastkę"]
  14. trzynascie = ["13", "trzynaście","trzynastu","trzynastkę"]
  15. czternascie = ["14", "czternaście", "czternastu", "czternastkę"]
  16. pietnascie = ["15", "piętnaście","piętnastu", "piętnastkę"]
  17. szesnascie = ["16", "szesnaście","szesnastu","szesnastkę"]
  18. siedemnascie = ["17","siedemnaście", "siedemnastu", "siedemnastkę"]
  19. osiemnasice = ["18", "osiemnaście","osiemnastu","osiemnastkę"]
  20. dziewietnascie = ["19","dziewiętnaście", "dziewiętnastu","dziewiętnastkę"]
  21. plus = ["+", "dodaj", "plus", "dodać"]
  22. minus = ["-", "odejmij", "minus", "odjąć"]
  23. gwiazdka = ["*", "x", "razy", "mnożone", "pomnożone", "pomnożyć"]
  24. ukosnik = ["/", ":", "dzielone", "podziel"]
  25. baza = [zero, jednen,dwa,trzy, cztery, piec, szesc,siedem, osiem, dziewiec,
  26.         dziesiec,jedenascie,dwanascie,trzynascie,czternascie,pietnascie,szesnascie,siedemnascie,osiemnasice,dziewietnascie,
  27.         plus, minus, gwiazdka, ukosnik]
  28. dziesiatki=["dzieścia", "dziesiąt", "dzieści"]
  29.  
  30. byla_dziesiatka = -1
  31.  
  32.  
  33. def przetlumacz(slowo):
  34.     global byla_dziesiatka
  35.     for koncowka in dziesiatki:
  36.         if slowo.endswith(koncowka):
  37.             byla_dziesiatka = 1
  38.             slowo = slowo.replace(koncowka,'')
  39.  
  40.     for baza_symbolu in baza:
  41.         for slowo_bazy_symbolu in baza_symbolu:
  42.             if slowo == slowo_bazy_symbolu:
  43.                 if byla_dziesiatka == 0 and not baza_symbolu[0].isdigit():
  44.                     byla_dziesiatka = -1
  45.                     return "0" + baza_symbolu[0]
  46.                 else:
  47.                     byla_dziesiatka -= 1
  48.                     return baza_symbolu[0]
  49.     return '' #jeśli słowo które próbujemy przetłumaczyć na liczbę lub operator nie występuje w naszych tablicach to je pomijamy
  50.  
  51. def oblicz(liczba1, liczba2, operacja):
  52.     if operacja == '+':
  53.         return liczba1 + liczba2
  54.     elif operacja == '-':
  55.         return liczba1 - liczba2
  56.     elif operacja == '*':
  57.         return liczba1 * liczba2
  58.     elif operacja == '/':
  59.         return liczba1 / liczba2
  60.  
  61. def oblicz_z_tekstu(tekst):
  62.     wynik = 0
  63.     liczba = ''
  64.     operacja = ''
  65.     for znak in tekst:
  66.         if znak.isdigit():
  67.             liczba += znak
  68.         else:
  69.             if operacja == '':
  70.                 wynik = int(liczba)
  71.             else:
  72.                 wynik = oblicz(wynik, int(liczba), operacja)
  73.             liczba = ''
  74.             operacja = znak
  75.     wynik = oblicz(wynik, int(liczba), operacja)
  76.     return wynik
  77.  
  78. kontynuowanie = ""
  79. while kontynuowanie != "n":
  80.     dzialanie = ""
  81.     tekst = input("podaj tekst: ").lower()
  82.     for slowo in tekst.split(" "):
  83.         dzialanie += przetlumacz(slowo)
  84.     if byla_dziesiatka == 0:
  85.         dzialanie+="0"
  86.     print(dzialanie)
  87.     print(oblicz_z_tekstu(dzialanie))
  88.     kontynuowanie = input("Czy chcesz kontynuować działanie programu (t/n)").lower()
  89. print("Koniec")
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement