0127 - Prima cifra

De la Universitas MediaWiki

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

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()

Rezolvare ver. 2

# 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)