1358 - Minciuna
Cerință
Andrei este foarte dezorganizat şi uneori mai strecoară câte o minciună. Pentru a-l responsabiliza, mama i-a dat în grijă biletele la teatru. Când aceasta îl întreabă unde a pus biletele, Andrei spune că între paginile numerotate cu x şi y ale manualului de informatică.
Să se verifice dacă răspunsul lui Andrei poate fi corect – dacă poate plasa biletele între paginile numerotate cu x și y ale manualului de informatică.
Date de intrare
Programul citeşte de la tastatură numerele naturale x şi y (reprezentând numărul paginilor).
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afişa pe ecran mesajul Andrei e mai responsabil, dacă Andrei poate plasa biletele între paginile numerotate cu x și y; în caz contrar programul va afişa minciuna. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări
- 1 ≤ x, y ≤ 1000
Exemplul 1
- Intrare
- 49 50
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- minciuna
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1"> def validare(x, y):
if 1 <= x <= 1000 and 1 <= y <= 1000: return True return False
def minciuna(x, y):
if x + 1 == y and x % 2 == 0 or y + 1 == x and y % 2 == 0: print('Andrei e mai responsabil') else: print('minciuna')
if __name__ == "__main__":
x, y = map(int, input().split()) if validare(x, y): print("Datele de intrare corespund restricțiilor impuse.") minciuna(x, y) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicatie
Acest program are două funcții definite, validare și minciuna, și un bloc if-else care încearcă să valideze datele de intrare, apoi să apeleze funcția minciuna dacă datele sunt valide, altfel să afișeze un mesaj de eroare.
Funcția validare primește două parametri, x și y, și verifică dacă ambele valori se încadrează în intervalul 1-1000 inclusiv. Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.
Funcția minciuna primește, de asemenea, doi parametri, x și y, și verifică dacă una dintre condițiile de minciună este adevărată sau nu. Dacă x este cu 1 mai mare decât y și x este un număr par, sau dacă y este cu 1 mai mare decât x și y este un număr par, atunci se afișează mesajul "Andrei e mai responsabil". În caz contrar, se afișează mesajul "minciuna".
În blocul if-else din programul principal, utilizatorul este întâi întrebat să introducă două valori întregi prin intermediul funcției input. Aceste valori sunt apoi convertite în numere întregi utilizând funcția map și funcția int. Dacă aceste valori sunt validate utilizând funcția validare, un mesaj de confirmare este afișat, iar funcția minciuna este apelată cu valorile x și y ca parametri. În caz contrar, un mesaj de eroare este afișat.