adrianlazar-okta

Tema1

Jan 15th, 2021
615
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### TEMA 1 ###
  2.  
  3. class Tema1(object):
  4.  
  5.     text = 'Text pentru calcularea, determinarea si rezolvarea cerintelor din exercitiile propuse.'
  6.  
  7.     def __init__(self):
  8.         print('#' * 30)
  9.         print('\tTEMA 1')
  10.         print('#' * 30, '\n')
  11.         self.ex_1()
  12.         self.ex_2()
  13.         self.ex_3()
  14.         self.ex_4()
  15.         self.ex_5()
  16.  
  17.     @property
  18.     def ex_1_doc(self):
  19.         return (""
  20.             "Ex1. Sa se determine de cate ori apare un anumit caracter intr-un sir de caractere dat."
  21.         "")
  22.  
  23.     def ex_1(self):
  24.         print("#" * 30)
  25.         print(self.ex_1_doc)
  26.         char = input("Introdu caracterul dorit pentru a fi cautat: ")
  27.         text = input("Introdu sirul de caractere pentru cautare(None pentru default): ")
  28.         if not text:
  29.             text = self.text
  30.         aparitii = len([_char for _char in text if _char == char])
  31.  
  32.         result_text = f'Caracterul {char} a fost gasit de {aparitii} ori in textul: \t`{text}`'
  33.         print(result_text)
  34.         print('#' * 30, '\n')
  35.  
  36.     @property
  37.     def ex_2_doc(self):
  38.         return (""
  39.             "Ex2. Sa se determine daca un sir de caractere este un numar intreg sau real"
  40.         "")
  41.  
  42.     def ex_2(self):
  43.         print("#" * 30)
  44.         print(self.ex_2_doc)
  45.  
  46.         text = input("Introdu sirul de caractere: ")
  47.         while not text:
  48.             text = input('Sirul de caractere este obligatoriu: ')
  49.  
  50.         nr_puncte, nan = 0, False
  51.         for char in text:
  52.             if char == '.':
  53.                 nr_puncte += 1
  54.             else:
  55.                 try:
  56.                     int(char)
  57.                 except ValueError:
  58.                     nan = True
  59.                     break
  60.  
  61.         if nan or nr_puncte > 1:
  62.             _type = 'nu este numar'
  63.         else:
  64.             if not nr_puncte: # bool(0) -> False
  65.                 _type = 'reprezinta un numar intreg'
  66.             else:
  67.                 _type = 'reprezinta un numar real'
  68.         print(f'Sirul de caractere {text} - {_type}.')
  69.         print('#' * 30, '\n')
  70.  
  71.     @property
  72.     def ex_3_doc(self):
  73.         return (""
  74.             "Ex3. Avand un cuvant x si un alfabet V sa se verifice daca x este cuvant peste V(adica toate literele din x se regasesc in V)"
  75.         "")
  76.  
  77.     def ex_3(self):
  78.         print("#" * 30)
  79.         print(self.ex_3_doc)
  80.         cuvant = input("Introdu cuvantul dorit: ")
  81.         vocabular = input("Introdu vocabularul dorit: ")
  82.  
  83.         # algoritmul de mai jos asigura
  84.         # forma vocabularului in formatul:
  85.         # a b c d e f g h i j k l m
  86.         index = 0
  87.         while True:
  88.             try:
  89.                 char = vocabular[index]
  90.                 if char != ' ':
  91.                     if vocabular[index + 1] != ' ':
  92.                         vocabular = input("Caracterele nu au fost delimitate. Te rog foloseste caracterul `space`(' ') pentru a le delimita: ")
  93.                         continue
  94.                 index += 1
  95.             except IndexError:
  96.                 break
  97.  
  98.         vocabular = set(vocabular.split(' '))
  99.         rezultat = 'se regaseste ' \
  100.             if len([char for char in cuvant if char in vocabular]) == len(cuvant) \
  101.             else 'nu se regaseste'
  102.         print(f'Cuvantul `{cuvant}` {rezultat} in vocabularul `{vocabular}`')
  103.         print('#' * 30, '\n')
  104.  
  105.     @property
  106.     def ex_4_doc(self):
  107.         return (""
  108.             "Ex4. Sa se inlocuiasca intr-un sir cuvant prima aparitie a subsirului dat s1 cu un alt subsir dat s2."
  109.         "")
  110.  
  111.     def ex_4(self):
  112.         print("#" * 30)
  113.         print(self.ex_4_doc)
  114.         cuvant = input("Introdu cuvantul dorit: ")
  115.         s1 = input("Introdu subsirul s1: ")
  116.         s2 = input("Introdu subsirul s2: ")
  117.         try:
  118.             index_s1 = cuvant.index(s1)
  119.             # transformarea cuvantului in lista
  120.             # pentru a avea posibilitatea de manipulare
  121.             # a acestuia
  122.             cuvant = list(cuvant)
  123.             cuvant[index_s1:index_s1 + len(s1)] = s2
  124.             cuvant = ''.join(cuvant)
  125.             rezultat = f'Sirul rezultat: `{cuvant}`'
  126.         except ValueError:
  127.             # s1 nu exista in cuvant
  128.             rezultat = f'Subsirul s1 `{s1}` nu exista in cuvantul `{cuvant}`'
  129.         print(rezultat)
  130.         print("#" * 30, '\n')
  131.  
  132.     @property
  133.     def ex_5_doc(self):
  134.         return (""
  135.             "Ex5. Determinați numarul de cuvinte dintr-o frază introdusă de  la tastatură, precum și ce cuvinte sunt în fraza respectivă, sub forma: "
  136.             "\n\tex: Ce cuvinte sunt in fraza? Determina!!"
  137.             "\n\tt1. Ce"
  138.             "\n\t2. cuvinte"
  139.             "\n\t3. sunt"
  140.             "\n\t4. in"
  141.             "\n\t5. fraza"
  142.             "\n\t6. Determina"
  143.             "\n\tIgnorați , . ? ! ..."
  144.         "")
  145.  
  146.     def ex_5(self):
  147.         print("#" * 30)
  148.         print(self.ex_5_doc)
  149.         ignore = {',', '\'', '\\', '?', '!', '.', '...', '`', '#', '@', '$', ' '}
  150.         fraza = f'{input("Introdu fraza dorita: ")} '
  151.  
  152.         cuvinte = []
  153.         cuvant = ''
  154.         for char in fraza:
  155.             if char not in ignore:
  156.                 cuvant += char
  157.             else:
  158.                 if cuvant != '':
  159.                     cuvinte.append(cuvant)
  160.                     cuvant = ''
  161.  
  162.         rezultat = {index: value for index, value in enumerate(cuvinte)}
  163.         print('Am gasit: ')
  164.         for index, value in rezultat.items():
  165.             print(f'{index}. {value}')
  166.         print("#" * 30, '\n')
  167.  
  168. if __name__ == '__main__':
  169.     Tema1()
  170.  
RAW Paste Data