0127 - Prima cifra

From Bitnami MediaWiki
Revision as of 22:20, 15 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>

  1. 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()
  1. 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()
  1. afișăm suma

print("Datele au fost introduse corect.") print("Suma primelor cifre este:", suma)

</syntaxhighlight>