2575 - Schimb Cif: Difference between revisions
No edit summary |
|||
Line 22: | Line 22: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def citeste_numar_de_numere(): | |||
while True: | while True: | ||
try: | try: | ||
numar_de_numere = int(input("Introduceți numărul de numere: ")) | |||
if | if numar_de_numere <= 0 or numar_de_numere > 100: | ||
raise ValueError(" | raise ValueError("Numărul de numere trebuie să fie între 1 și 100.") | ||
return numar_de_numere | |||
except ValueError as e: | except ValueError as e: | ||
print(e) | print(e) | ||
def citeste_numere(numar_de_numere): | |||
for numar in 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: | |||
print( | 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 === | |||
<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> | </syntaxhighlight> |
Latest revision as of 09:27, 16 May 2023
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>