2638 - eval exp: Difference between revisions
Pagină nouă: Se consideră o expresie formată din numere naturale și operatorii '''+''', '''-''','''*'''. ==Cerința== Să se evalueze expresia. ==Date de intrare== Programul citește de la tastatură expresia. ==Date de ieșire== Programul va afișa pe ecran un singur număr reprezentând valoarea expresiei. ==Restricții și precizări== *Lungimea expresiei va fi de cel mult '''50''' de caractere *Rezultatul final precum și rezultatele intermediare se vor încadra în tipul d... |
No edit summary |
||
Line 19: | Line 19: | ||
*Expresia este corectă și nu conține alte caractere în afară de cifre și operatorii '''+''', '''-''', '''*'''. | *Expresia este corectă și nu conține alte caractere în afară de cifre și operatorii '''+''', '''-''', '''*'''. | ||
== | ==Exemplul 1:== | ||
;Intrare | ;Intrare | ||
234-10+21*12 | |||
;Ieșire | ;Ieșire | ||
: | Datele de intrare corespund restrictiilor impuse. | ||
476 | |||
==Exemplul 2:== | |||
;Intrare | |||
eval exp | |||
;Ieșire | |||
Datele de intrare nu corespund restrictiilor impuse. | |||
==Rezolvare== | ==Rezolvare== | ||
Line 33: | Line 44: | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
# | def verificare_restrictii(expresia): # functia de verificare a datelor de intrare | ||
def evalueaza_expresia( | 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: | try: | ||
# Folosim functia eval() pentru a evalua expresia | # Folosim functia eval() pentru a evalua expresia | ||
rezultat = eval( | rezultat = eval(expresia) | ||
# Returnam rezultatul | # Verificam daca rezultatul se incadreaza in tipul de date long long | ||
return | if -9223372036854775808 <= rezultat <= 9223372036854775807: | ||
except Exception as | # Returnam rezultatul | ||
return rezultat | |||
else: | |||
return "Datele de intrare nu corespund restrictiilor impuse." | |||
except Exception as excep: | |||
# Daca apare o eroare, o returnam | # Daca apare o eroare, o returnam | ||
return str( | return str(excep) | ||
# Citim expresia de la tastatura | if __name__ == '__main__': | ||
expresie = input("Introduceti expresia: ") | try: | ||
# Apelam functia pentru a evalua expresia si afisam rezultatul | # Citim expresia de la tastatura | ||
print("Rezultatul este: ", evalueaza_expresia(expresie)) | 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> | </syntaxhighlight> |
Latest revision as of 20:38, 12 December 2023
Se consideră o expresie formată din numere naturale și operatorii +, -,*.
Cerința
Să se evalueze expresia.
Date de intrare
Programul citește de la tastatură expresia.
Date de ieșire
Programul va afișa pe ecran un singur număr reprezentând valoarea expresiei.
Restricții și precizări
- 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:
- Intrare
234-10+21*12
- Ieșire
Datele de intrare corespund restrictiilor impuse. 476
Exemplul 2:
- Intrare
eval exp
- Ieșire
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare
<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>