2678 - Form Nr: Difference between revisions
Pagină nouă: == Cerința == Se dă un șir de caractere ce conține litere, cifre, semne de punctuație, spații și alte simboluri ASCII. Cifrele din șir formează numere, scrise în baza 10. Să se determine suma acestor numere. == Date de intrare == Programul citește de la tastatură șirul dat. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa suma calculată. În caz c... |
|||
Line 26: | Line 26: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 2678 Form Nr | |||
def validare(sir_caractere): | |||
if len(sir_caractere) > 255: | |||
raise ValueError | |||
nr_cifre = 0 | |||
for caracter in sir_caractere: | |||
if '0' <= caracter <= '9': | |||
nr_cifre += 1 | |||
if nr_cifre == 0: | |||
raise ValueError | |||
print("Datele de intrare corespund restrictiilor impuse") | |||
def cifra(caracter): | |||
if '0' <= caracter <= '9': | |||
return True | |||
return False | |||
def form_nr(sir_caracterte): | |||
lista_numere = [] | |||
index = 0 | |||
while index < len(sir_caracterte): | |||
numar = "" | |||
while cifra(sir_caracterte[index]): | |||
numar += sir_caracterte[index] | |||
index += 1 | |||
if len(numar) > 0: | |||
lista_numere.append(int(numar)) | |||
index += 1 | |||
suma = 0 | |||
for numar in lista_numere: | |||
suma += numar | |||
print(suma) | |||
if __name__ == '__main__': | |||
try: | |||
cuvant = input("Introduceți șirul de caractere: ") | |||
validare(cuvant) | |||
form_nr(cuvant) | |||
except ValueError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
except IndexError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> |
Revision as of 20:36, 14 April 2023
Cerința
Se dă un șir de caractere ce conține litere, cifre, semne de punctuație, spații și alte simboluri ASCII. Cifrele din șir formează numere, scrise în baza 10. Să se determine suma acestor numere.
Date de intrare
Programul citește de la tastatură șirul dat.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa suma calculată. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"
Restricții și precizări
- șirul conține maxim 255 de caractere;
- cifrele sunt de la 0 la 9.
- rezultatul sumei nu depășește 2.000.000.000
Exemplu 1
- Intrare
- an2a are 52 de creioane si cu 7 mai multe pixuri.
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 61
Exemplu 2
- Intrare
- Alina a predat tema
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Explicație
2+52+7=61
Rezolvare
<syntaxhighlight lang="python" line>
- 2678 Form Nr
def validare(sir_caractere):
if len(sir_caractere) > 255: raise ValueError
nr_cifre = 0 for caracter in sir_caractere: if '0' <= caracter <= '9': nr_cifre += 1
if nr_cifre == 0: raise ValueError
print("Datele de intrare corespund restrictiilor impuse")
def cifra(caracter):
if '0' <= caracter <= '9': return True
return False
def form_nr(sir_caracterte):
lista_numere = [] index = 0 while index < len(sir_caracterte): numar = "" while cifra(sir_caracterte[index]): numar += sir_caracterte[index] index += 1
if len(numar) > 0: lista_numere.append(int(numar)) index += 1
suma = 0 for numar in lista_numere: suma += numar
print(suma)
if __name__ == '__main__':
try: cuvant = input("Introduceți șirul de caractere: ")
validare(cuvant) form_nr(cuvant)
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>