3926 - Alternant 1: Difference between revisions
No edit summary |
No edit summary |
||
Line 18: | Line 18: | ||
: 265 | : 265 | ||
; Ieșire | ; Ieșire | ||
: nu | : Numărul nu este alternant. | ||
== Exemplu 2 == | == Exemplu 2 == | ||
Line 24: | Line 24: | ||
: 8183 | : 8183 | ||
; Ieșire | ; Ieșire | ||
: | : Numărul este alternant. | ||
== Rezolvare == | == Rezolvare == | ||
Line 32: | Line 31: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def este_numar_natural(numar): | ||
try: | try: | ||
numar_int = int(numar) | numar_int = int(numar) | ||
if numar_int <= 0: | if numar_int <= 0: | ||
return False # Returnăm False dacă numărul este mai mic sau egal cu 0 | |||
elif str(numar_int) != numar: | elif str(numar_int) != numar: | ||
return False # Returnăm False dacă conversia la întreg și apoi înapoi la șir nu dă același rezultat | |||
else: | else: | ||
paritate = | return True # Returnăm True dacă numărul este un număr natural valid | ||
except ValueError: | |||
return False # Returnăm False dacă conversia la întreg nu este posibilă | |||
def este_alternant(numar): | |||
cifre = str(numar) | |||
paritate = int(cifre[0]) % 2 # Paritatea primei cifre | |||
for i in range(1, len(cifre)): | |||
if int(cifre[i]) % 2 == paritate: | |||
return False # Returnăm False dacă găsim o cifră cu aceeași paritate ca și cifra anterioară | |||
paritate = 1 - paritate # Schimbăm paritatea între 0 și 1 | |||
return True # Returnăm True dacă toate cifrele sunt alternante în ceea ce privește paritatea | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
numar = input("Introduceți un număr natural: ") | numar = input("Introduceți un număr natural: ") | ||
if not este_numar_natural(numar): | |||
print("Numărul introdus nu este valid.") | |||
else: | |||
if este_alternant(numar): | |||
print("Numărul este alternant.") | |||
else: | |||
print("Numărul nu este alternant.") | |||
print("Datele au fost introduse corect.") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 77: | Line 83: | ||
print("Numărul introdus conține caractere nevalide.") | print("Numărul introdus conține caractere nevalide.") | ||
else: | else: | ||
paritate = | cifre = str(numar_int) | ||
paritate = int(cifre[0]) % 2 # Paritatea primei cifre | |||
for i in range(1, len(cifre)): | for i in range(1, len(cifre)): | ||
if int(cifre[i]) % 2 | if int(cifre[i]) % 2 == paritate: | ||
print("Numărul nu este alternant.") | print("Numărul nu este alternant.") | ||
break | break | ||
paritate = 1 - paritate # Schimbăm paritatea: 0 devine 1, 1 devine 0 | |||
else: | else: | ||
print("Numărul este alternant.") | print("Numărul este alternant.") | ||
print("Datele sunt introduse corect.") | |||
except ValueError: | except ValueError: |
Latest revision as of 10:46, 15 May 2023
Sursa: [1]
Explicație[edit | edit source]
Spunem că un număr natural este alternant dacă cifrele pare alternează cu cele impare. De exemplu, numere alternante sunt 236, 6, 12345678.
Cerinţa[edit | edit source]
Se dă un număr natural. Să se verifice dacă este sau nu alternant.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran mesajul da dacă numarul este alternant sau mesajul nu dacă nu este alternant.
Restricții și precizări[edit | edit source]
- 0 ≤ numar ≤ 1.000.000.000.000.000
Exemplu 1[edit | edit source]
- Intrare
- 265
- Ieșire
- Numărul nu este alternant.
Exemplu 2[edit | edit source]
- Intrare
- 8183
- Ieșire
- Numărul este alternant.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def este_numar_natural(numar):
try: numar_int = int(numar) if numar_int <= 0: return False # Returnăm False dacă numărul este mai mic sau egal cu 0 elif str(numar_int) != numar: return False # Returnăm False dacă conversia la întreg și apoi înapoi la șir nu dă același rezultat else: return True # Returnăm True dacă numărul este un număr natural valid except ValueError: return False # Returnăm False dacă conversia la întreg nu este posibilă
def este_alternant(numar):
cifre = str(numar) paritate = int(cifre[0]) % 2 # Paritatea primei cifre
for i in range(1, len(cifre)): if int(cifre[i]) % 2 == paritate: return False # Returnăm False dacă găsim o cifră cu aceeași paritate ca și cifra anterioară paritate = 1 - paritate # Schimbăm paritatea între 0 și 1
return True # Returnăm True dacă toate cifrele sunt alternante în ceea ce privește paritatea
if __name__ == "__main__":
numar = input("Introduceți un număr natural: ")
if not este_numar_natural(numar): print("Numărul introdus nu este valid.") else: if este_alternant(numar): print("Numărul este alternant.") else: print("Numărul nu este alternant.") print("Datele au fost introduse corect.")
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
numar = input("Introduceți un număr natural: ")
try:
numar_int = int(numar) # Convertim numarul introdus într-un întreg
if numar_int <= 0: print("Numărul introdus nu este un număr natural.") elif str(numar_int) != numar: print("Numărul introdus conține caractere nevalide.") else: cifre = str(numar_int) paritate = int(cifre[0]) % 2 # Paritatea primei cifre
for i in range(1, len(cifre)): if int(cifre[i]) % 2 == paritate: print("Numărul nu este alternant.") break paritate = 1 - paritate # Schimbăm paritatea: 0 devine 1, 1 devine 0
else: print("Numărul este alternant.")
print("Datele sunt introduse corect.")
except ValueError:
print("Numărul introdus nu este valid.")
</syntaxhighlight>