0127 - Prima cifra
sursa:[1]
Cerinţa
Se dă un număr natural, apoi acel numar de numere naturale. Să se calculeze suma obținută prin adunarea primei cifre numerelor citite.
Date de intrare
Programul citește de la tastatură numărul, iar apoi acel numar de numere naturale, puse pe randuri diferite.
Date de ieşire
Programul afișează pe ecran suma obținută prin adunarea primei cifre a numerelor citite.
Restricții și precizări
- 0 < numar < 1000
- numerele citite vor fi mai mici decât 2.000.000
Exemplu
- Intrare
- 5
- 100 212 3 45 5021
- Ieșire
- 15
Explicație
S-au citit 5 numere. Trebuie adunate prima cifra a fiecarui numar, iar suma lor este 1+2+3+4+5=15.
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line>
def citeste_numar_numere():
""" Funcție pentru citirea numărului de numere de la utilizator. Returnează numărul citit sau None în caz de eroare. """ try: numar = int(input("Introduceți numărul de numere: ")) if numar <= 0: print("Numărul de numere trebuie să fie un întreg pozitiv.") return None return numar except ValueError: print("Numărul de numere trebuie să fie un număr întreg.") return None
def citeste_numere(numar):
""" Funcție pentru citirea listei de numere de la utilizator. Primește numărul de numere și returnează lista de numere citite sau None în caz de eroare. """ numere = [] for i in range(numar): numar_curent = input("Introduceți numărul #" + str(i+1) + ": ") try: numar_curent = int(numar_curent) if numar_curent <= 0 or numar_curent > 999999999: print("Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.") return None else: numere.append(numar_curent) except ValueError: print("Datele de intrare trebuie să fie numere întregi.") return None return numere
def calculeaza_suma_primelor_cifre(numere):
""" Funcție pentru calcularea sumei primelor cifre ale numerelor dintr-o listă. Primește lista de numere și returnează suma primelor cifre. """ suma = 0 for numar in numere: suma += int(str(numar)[0]) return suma
def main():
numar = citeste_numar_numere() if numar is None: exit()
numere = citeste_numere(numar) if numere is None: exit()
suma = calculeaza_suma_primelor_cifre(numere)
print("Datele au fost introduse corect.") print("Suma primelor cifre este:", suma)
if __name__ == "__main__":
main()
</syntaxhighlight>
Rezolvare ver. 2
<syntaxhighlight lang="python" line>
- citim numărul de numere
try:
numar = int(input("Introduceți numărul de numere: ")) if numar <= 0: print("Numărul de numere trebuie să fie un întreg pozitiv.") exit()
except ValueError:
print("Numărul de numere trebuie să fie un număr întreg.") exit()
- citim numerele și calculăm suma primelor cifre
suma = 0 for i in range(numar):
numar_curent = input("Introduceți numărul #" + str(i+1) + ": ") try: numar_curent = int(numar_curent) if numar_curent <= 0 or numar_curent > 999999999: print("Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.") exit() else: suma += int(str(numar_curent)[0]) except ValueError: print("Datele de intrare trebuie să fie numere întregi.") exit()
- afișăm suma
print("Datele au fost introduse corect.") print("Suma primelor cifre este:", suma)
</syntaxhighlight>