0053 - Cate Impare: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Pagină nouă: ==Cerinţa== Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau impare. ==Date de intrare== Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0. ==Date de ieşire== Programul afișează pe ecran numărul C, reprezentând numărul de numere impare citite. ==Restricţii şi precizări== numerele citite aparțin intervalului [0; 1.000.000.000) ==Exemplu:== Intrare 5 6 2 1 0 Ie...
 
Paul Ungur (talk | contribs)
No edit summary
Line 18: Line 18:
2
2


==Rezolvare==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def is_natural_number(n):
def is_natural_number(n):

Revision as of 08:18, 22 April 2023

Cerinţa

Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau impare.

Date de intrare

Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0.

Date de ieşire

Programul afișează pe ecran numărul C, reprezentând numărul de numere impare citite.

Restricţii şi precizări

numerele citite aparțin intervalului [0; 1.000.000.000)

Exemplu:

Intrare 5 6 2 1 0

Ieșire 2

Rezolvare

<syntaxhighlight lang="python" line> def is_natural_number(n):

   if n >= 0 and n == int(n):
       return True
   return False

def read_numbers():

   numbers = []
   while True:
       n = int(input())
       if n == 0:
           break
       if is_natural_number(n):
           numbers.append(n)
       else:
           print("Input must be a natural number!")
   return numbers

def count_odd_numbers(numbers):

   count = 0
   for n in numbers:
       if n % 2 != 0:
           count += 1
   return count

def main():

   numbers = read_numbers()
   odd_count = count_odd_numbers(numbers)
   print(odd_count)

if __name__ == '__main__':

   main()

</syntaxhighlight>

Explicatie

În funcția is_natural_number, verificăm dacă numărul primit ca parametru este un întreg natural și returnăm True sau False în consecință. În funcția read_numbers, citim numere până la introducerea valorii 0 și le adăugăm într-o listă, folosind funcția is_natural_number pentru a valida fiecare număr citit. Dacă un număr introdus nu este un întreg natural, afișăm un mesaj de eroare. În funcția count_odd_numbers, numărăm câte dintre numerele primite ca parametru sunt impare. În funcția principală, apelăm cele două funcții menționate mai sus și afișăm numărul de numere impare găsite în listă. Astfel, prin folosirea celor trei funcții separate, putem scrie un cod mai modular și mai ușor de înțeles și de modificat în cazul în care dorim să adăugăm mai multă funcționalitate.