1365 - Aceeasi Paritate
Sursa: aceeasi_paritate
Cuprins
Cerinţă
Se dau n
numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere întregi, separate prin spații.
Date de ieșire
Programul va afișa pe ecran elementele noului șir de numere obținut după inserarea elementelor, separate prin câte un spațiu.
Restricţii şi precizări
- 1 <= n <= 100
- valorile elementelor șirului vor fi cuprinse între -1.000.000 și 1.000.000
Exemple
Exemplul 1
- Intrare
- 3
- 2 4 3
- Ieșire
- [2, 3.0, 4, 3]
Exemplul 2
- Intrare
- ads
- Ieșire
- Introduceti un numar intreg.
Exemplul 3
- Intrare
- 4
- 2 3 4 5 6
- Ieșire
- Trebuie sa introduceti exact 4 numere
Rezolvare
<syntaxhighlight lang="python" line="1"> def citire_n():
while True: try: n = int(input("Introduceti numarul de elemente: ")) if 1 <= n <= 100 and isinstance(n, int): return n print("Numarul trebuie sa fie intreg si cuprins intre 1 si 100.") except ValueError: print("Introduceti un numar intreg.")
def citire_sir(n):
""" Functia citeste de la tastatura n numere intregi si le adauga intr-un sir pe care il returneaza """ sir = [] try: input_string = input("Introduceti numerele separate prin spatiu: ") input_list = input_string.split() if len(input_list) != n: print(f"Trebuie sa introduceti exact {n} numere") return citire_sir(n) for i in range(n): x = int(input_list[i]) while x < -1000000000 or x > 1000000000: print("Numarul trebuie sa fie cuprins intre -1000000000 si 1000000000") x = int(input(f"Introduceti numarul {i+1}: ")) sir.append(x) except ValueError: print("Introduceti doar numere intregi separate prin spatiu") return citire_sir(n) return sir
def adauga_medie(sir):
""" Functia primeste un sir de numere intregi si adauga intre oricare doua numere de aceeasi paritate media lor aritmetica """ i = 0 while i < len(sir)-1: if sir[i] % 2 == 0 and sir[i+1] % 2 == 0: media = (sir[i] + sir[i+1]) / 2 sir.insert(i+1, media) i += 2 elif sir[i] % 2 != 0 and sir[i+1] % 2 != 0: media = int((sir[i] + sir[i+1]) / 2) sir.insert(i+1, media) i += 2 else: i += 1
if __name__ == '__main__':
n = citire_n() sir = citire_sir(n) adauga_medie(sir) print(sir)
</syntaxhighlight>