1358 - Minciuna

From Bitnami MediaWiki

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

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.

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.