2638 - eval exp
Se consideră o expresie formată din numere naturale și operatorii +, -,*.
Cerința[edit | edit source]
Să se evalueze expresia.
Date de intrare[edit | edit source]
Programul citește de la tastatură expresia.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran un singur număr reprezentând valoarea expresiei.
Restricții și precizări[edit | edit source]
- Lungimea expresiei va fi de cel mult 50 de caractere
- Rezultatul final precum și rezultatele intermediare se vor încadra în tipul de date long long
- Expresia este corectă și nu conține alte caractere în afară de cifre și operatorii +, -, *.
Exemplul 1:[edit | edit source]
- Intrare
234-10+21*12
- Ieșire
Datele de intrare corespund restrictiilor impuse. 476
Exemplul 2:[edit | edit source]
- Intrare
eval exp
- Ieșire
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1">
def verificare_restrictii(expresia): # functia de verificare a datelor de intrare
if len(expresia) <= 50 and all(c.isdigit() or c in ['+', '-', '*'] for c in expresia): return True else: return False
def evalueaza_expresia(expresia):
try: # Folosim functia eval() pentru a evalua expresia rezultat = eval(expresia) # Verificam daca rezultatul se incadreaza in tipul de date long long if -9223372036854775808 <= rezultat <= 9223372036854775807: # Returnam rezultatul return rezultat else: return "Datele de intrare nu corespund restrictiilor impuse." except Exception as excep: # Daca apare o eroare, o returnam return str(excep)
if __name__ == '__main__':
try: # Citim expresia de la tastatura expresie = input("Introduceti expresia: ") if verificare_restrictii(expresie): # verificam datele de intrare print("Datele de intrare corespund restrictiilor impuse.") # Apelam functia pentru a evalua expresia si afisam rezultatul print("Rezultatul este: ", evalueaza_expresia(expresie)) else: print("Datele de intrare nu corespund restrictiilor impuse.") # ne asteptam la o eroare din cauza datelor de intrare, o tratam corespunzator except Exception as e: print("A aparut o eroare: ", str(e))
</syntaxhighlight>