1684 - Numere Piramidale

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerința

Amicul nostru, Zoli, a învățat la scoală despre pătrate perfecte și numere piramidale. Al n-lea număr piramidal înseamnă suma primelor n pătrate perfecte, începând de la 1. Ajutați-l pe Zoli sa afle primele n numere piramidale.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa pe ecran primele n numere piramidale, în ordine crescătoare, separate prin câte un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricții și precizări

1 ≤ n ≤ 400

Exemplu:

Intrare

3

Ieșire

Date de intrare valide
1 5 14

Explicație

Primele 3 numere piramidale sunt 1, 5 si 14.

Rezolvare

def validare_date(n):
    if not n.isdigit():
        return False
    n = int(n)
    if n < 1 or n > 400:
        return False
    return True


def compute_pyramid_numbers(n):
    pyramid_numbers = []
    for i in range(1, n+ 1):
        pyramid_number = sum([j ** 2 for j in range(1, i + 1)])
        pyramid_numbers.append(pyramid_number)
    print("Primele", n, "numere piramidale sunt:", " ".join(str(p) for p in pyramid_numbers))


if __name__ == '__main__':
    n = input("Introduceti numarul de numere piramidale: ")
    while not validare_date(n):
        n = input("Input invalid! Introduceti numarul de numere piramidale: ")
    if validare_date(n):
        print("Date de intrare valide")
        compute_pyramid_numbers(int(n))

Explicatie cod:

Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a calcula numere piramidale. Verifică dacă n este un șir de caractere numeric și apoi convertește n la tipul int. Verifică apoi dacă n se încadrează în intervalul [1, 400]. Dacă nu se îndeplinesc aceste condiții, returnează False, altfel returnează True. Funcția compute_pyramid_numbers(n) calculează primele n numere piramidale. Folosește o buclă for pentru a itera de la 1 la n. Pentru fiecare valoare i, calculează numărul piramidal folosind formula pyramid_number = sum([j ** 2 for j in range(1, i + 1)]). Adaugă numărul piramidal calculat în lista pyramid_numbers. La final, afișează lista pyramid_numbers într-un format adecvat. În blocul if __name__ == '__main__':, se solicită utilizatorului să introducă numărul de numere piramidale pe care dorește să le calculeze. Se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, utilizatorului i se cere să reintroducă un număr valid. Dacă valoarea introdusă este validă, se afișează mesajul "Date de intrare valide" și se apelează funcția compute_pyramid_numbers(int(n)) pentru a calcula și afișa numerele piramidale.