poprzedni temat | w górę | następny temat

Zadania powtórzeniowe

  1. Napisz funkcję, która przyjmuje liczbę całkowitą z zakresu 1-3999 i zwraca napis z liczbą zapisaną w rzymskim systemie liczbowym. Jeśli podana zostanie liczba spoza zakładanego zakresu, powinien być zgłoszony wyjątek ValueError.

  2. Napisz funkcję, która przyjmuje liczbę całkowitą z zakresu 0-100 000 000 000 i zwraca napis z jej słownym zapisem. Preferowany jest zapis jak najbardziej zgodny z językiem codziennym: na przykład dla argumentu 1000020 wynikiem powinien być napis 'milion dwadzieścia' zamiast 'jeden milion zero tysięcy dwadzieścia'.

    Jak zaimplementować tę funkcję, jeśli byłaby dostępna poniższa lista?

    nazwy = [
      (u'', u'', u''),
      (u'tysiac', u'tysiące', u'tysięcy'),
      (u'milion', u'miliony', u'milionów'),
      (u'miliard', u'miliardy', u'miliardów'),
      (u'bilion', u'biliony', u'bilionów'),
      (u'biliard', u'biliardy', u'biliardów'),
      (u'trylion', u'tryliony', u'tryliardów'),
      # i tak dalej...
    ]
    
  3. Napisz funkcję odwrotną do tej z zadania 2.

  4. Napisz funkcję, która przyjmuje liczbę całkowitą n i zwraca listę krotek [(p1, w1), (p2, w2), ..., (pk, wk)] reprezentującą rozkład liczby n na czynniki pierwsze tak, że n = p1^w1 * p2^w2 * ... * pk^wk. Rozważ użycie defaultdict lub Counter.

  5. Napisz funkcję, która otrzymuje zdanie w postaci napisu i zwraca napis, w którym wszystkie słowa występują w odwrotnej kolejności.

  6. Napisz funkcję labels(), która zwraca generator zwracający nieskończoną sekwencję etykiet kolumn w arkuszu kalkulacyjnym.

    for i, label in enumerate(labels('ABC')):
        if i > 15:
            break
        print(label)
    
    A
    B
    C
    AA
    AB
    AC
    BA
    BB
    BC
    CA
    CB
    CC
    AAA
    AAB
    AAC
    ABA
    
poprzedni temat | w górę | następny temat