0348 - Afisare Puteri
Cerinţa:
Se dau două numere naturale nenule n și p. Afișați în ordine crescătoare puterile lui n mai mici sau egale cu p .
Date de intrare:
Programul citește de la tastatură numerele n și p .
Date de ieşire:
Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul afișează pe ecran, în ordine crescătoare, puterile lui n mai mici sau egale cu p , 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:
2 ≤ n ≤ 10 1 ≤ p < 1.000.000.000
Exemplu:
Date de intrare
- 3 100
Date de ieșire
- Date de intrare valide
- 1 3 9 27 81
Rezolvare
<syntaxhighlight lang="python" line="1"> def validare(n, p):
if not isinstance(n, int) or not isinstance(p, int): return False if n <= 1 or p <= 0 or p >= 1000000000: return False return True
def rezolvare(n, p):
i = 0 while n ** i <= p: print(n ** i, end=' ') i += 1
if __name__ == "__main__":
n = int(input("Introduceti n: ")) p = int(input("Introduceti p: ")) if validare(n, p): rezolvare(n, p) print("Date de intrare valide") else: print("Date de intrare invalide")
</syntaxhighlight>
Explicatie cod:
Codul Python de mai sus definește două funcții: validare și rezolvare. Iată o explicație pentru fiecare dintre ele:
Funcția validare(n, p): Această funcție primește doi parametri, n și p, reprezentând două numere întregi. Verifică mai multe condiții pentru a valida datele introduse: Verifică dacă atât n cât și p sunt de tipul int. Dacă nu sunt, funcția returnează False, semnalând că datele sunt invalide. Verifică dacă n este mai mic sau egal cu 1 sau p este mai mic sau egal cu 0 sau mai mare sau egal cu 1.000.000.000. Dacă una dintre aceste condiții nu este îndeplinită, funcția returnează False, semnalând că datele sunt invalide. Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. Funcția rezolvare(n, p): Această funcție primește doi parametri, n și p, reprezentând două numere întregi. Funcția calculează și afișează toate puterile lui n care sunt mai mici sau egale cu p. Într-un ciclu while, se verifică condiția n ** i <= p, unde i este un contor inițializat cu 0. În fiecare iterație, se afișează rezultatul n ** i și se incrementează i cu 1. Afișarea este realizată cu ajutorul funcției print, iar valorile sunt separate prin spațiu. În cadrul secțiunii if __name__ == "__main__": se realizează următoarele acțiuni:
Se citește de la tastatură două numere întregi n și p folosind funcția input(). Se apelează funcția validare(n, p) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția rezolvare(n, p) pentru a calcula și afișa rezultatul. Dacă datele nu sunt valide, se afișează mesajul "Date de intrare invalide". În cazul în care datele sunt valide, se afișează mesajul "Date de intrare valide" după ce funcția rezolvare(n, p) a afișat toate puterile lui n.