2575 - Schimb Cif
Sursa: [1]
Cerinţa[edit | edit source]
Se citește un numar și apoi acel numar de numere naturale. Să se afișeze numerele oglindite fără a modifica prima și ultima cifră.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul de numere, iar apoi numerele naturale.
Date de ieșire[edit | edit source]
Programul va afișa numerele oglindite, separate exact un spațiu, fără a modifica prima și ultima cifră.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 100
- numerele citite vor fi mai mici decât 5.000.000.000
Exemplu[edit | edit source]
- Intrare
- 3
- 21 121 1023
- Ieșire
- 21 121 1203
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numar_de_numere():
while True: try: numar_de_numere = int(input("Introduceți numărul de numere: ")) if numar_de_numere <= 0 or numar_de_numere > 100: raise ValueError("Numărul de numere trebuie să fie între 1 și 100.") return numar_de_numere except ValueError as e: print(e)
def citeste_numere(numar_de_numere):
numere = [] for i in range(numar_de_numere): while True: try: numar = int(input(f"Introduceți numărul {i + 1}: ")) if numar < 0 or numar >= 5000000000: raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.") numere.append(numar) break except ValueError as e: print(e) return numere
def inverseaza_cifrele(numere):
numere_inversate = [] for numar in numere: cifre = list(str(numar)) # transformă numărul într-o listă de cifre invers = cifre[0] # păstrează prima cifră neschimbată if len(cifre) > 1: invers += .join(cifre[-2:0:-1]) # inversează cifrele din interiorul numărului invers += cifre[-1] # păstrează ultima cifră neschimbată numere_inversate.append(int(invers)) return numere_inversate
if __name__ == "__main__":
numar_de_numere = citeste_numar_de_numere() # Citirea numărului de numere numere = citeste_numere(numar_de_numere) # Citirea și validarea numerelor numere_inversate = inverseaza_cifrele(numere) # Inversarea cifrelor numerelor
# Afișarea numerelor inversate for numar in numere_inversate: print(numar, end=' ')
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numar_de_numere():
while True: try: numar_de_numere = int(input("Introduceți numărul de numere: ")) if numar_de_numere <= 0 or numar_de_numere > 100: raise ValueError("Numărul de numere trebuie să fie între 1 și 100.") return numar_de_numere except ValueError as e: print(e)
def citeste_numere(numar_de_numere):
numere = [] for i in range(numar_de_numere): while True: try: numar = int(input(f"Introduceți numărul {i + 1}: ")) if numar < 0 or numar >= 5000000000: raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.") numere.append(numar) break except ValueError as e: print(e) return numere
def inverseaza_cifrele(numere):
numere_inversate = [] for numar in numere: cifre = list(str(numar)) # transformă numărul într-o listă de cifre invers = cifre[0] # păstrează prima cifră neschimbată if len(cifre) > 1: invers += .join(cifre[-2:0:-1]) # inversează cifrele din interiorul numărului invers += cifre[-1] # păstrează ultima cifră neschimbată numere_inversate.append(int(invers)) return numere_inversate
if __name__ == "__main__":
numar_de_numere = citeste_numar_de_numere() numere = citeste_numere(numar_de_numere) numere_inversate = inverseaza_cifrele(numere)
for numar in numere_inversate: print(numar, end=' ')
</syntaxhighlight>