Minimo / massimo

Vedi la versione senza funzioni.

Dati due o più valori decidere qual è il più piccolo (grande)

Soluzione 1

La funzione predefinita min() accetta un numero variabile di argomenti e offre la soluzione più immediata…

...
m2 = min(a, b)
m3 = min(a, b, c)
m4 = min(a, b, c, d)
...

Soluzione 2

Puoi scegliere tra diverse soluzioni per 2 argomenti e continuare per 3, 4, …

def min2(x, y):
    if(x <= y):
        return x
    else:
        return y
def min2(x, y):
    if(x <= y):
        m = x
    else:
        m = y
    return m
def min2(x, y):
    m = x
    if(y <= m):
        m = y
    return m
def min3(x, y, z):
    if(x <= y):
        if(x <= z):
            return x
        else:
            return z
    else:
        if(y <= z):
            return y
        else:
            return z
def min3(x, y, z):
    if(x <= y):
        m = x
    else:
        m = y
    if(z < m):
        m = z
    return m
def min3(x, y, z):
    m = x
    if(y < m):
        m = y
    if(z < m):
        m = z
    return m

Soluzione 3

Le funzioni con 3, 4, … argomenti non sono necessarie perché dopo aver realizzato la funzione con 2 argomenti puoi riutilizzarla

def min2(x, y): 
    if(x <= y): return x 
    else:       return y
 
m2 = min2(a, b)                    # Minimo di 2
 
m2 = min2(a, b)
m3 = min2(m2, c)                   # Minimo di 3
m3 = min2(min2(a, b), c)           # Minimo di 3 senza la variabile m2
 
m4 = min2(min2(a, b), min2(c, d))  # Minimo di 4 senza altre variabili
m4 = min2(min2(min2(a, b), c), d)  # oppure...
...

Massimo?

Ripeti i ragionamenti precedenti sostituendo min() con max(), <= con >=, …