Domanda Funzioni semplici in python... una piccola mano? Grazie!

HundredsMachine

Utente Bronze
5 Giugno 2018
1
1
0
21
Mi è stato chiesto di creare le seguenti funzioni in python.. potreste aiutarmi?

1) Crea una funzione che converte i kilometri in miglia.
2) Crea una funzione che prenda in input tre numeri e restituisca il loro massimo
3) Crea una funzione che prenda in input un elenco di numeri naturali (4 vanno bene) e restituisca il valore della varianza.

Le condizioni che sono state inserite sono le seguenti:
- Ogni funzione deve essere scritta in una cella;
- L'ultima cella deve richiamare le tre funzioni e stampare i risultati di ciascuno di essi.

Ipotizzo sia abbastanza semplice, tuttavia sto imparando da poco e vorrei capire per bene come muovermi... magari partendo da queste semplici task risolte per poi procedere con altre più complicate!

Grazie a chi mi aiuterà! :)
 
Ultima modifica:
Sarebbe carino se tu postassi le tue soluzioni, anche se sbagliate, per far vedere che almeno ci stai provando, che sai di cosa si parla. Python non è copia e incolla, apprezziamo il tuo sforzo come tu apprezzerai il nostro di aiutarti. Pubblica il tuo codice e vediamo a che punto sei.
Non mi prendere per antipatico o per cattivo, ma se ti postassi qui la soluzione senza nemmeno spiegarti i procedimenti, sarebbe inutile per te stesso, perchè non capiresti a fondo il problema.

Comunque, proviamoci:

Facciamo intanto il punto 1:

Crea una funzione che converta i KM in miglia.

Step 1: Prima ancora di definire una funzione, sarà meglio capire di cosa si sta parlando. Personalmente a memoria non so i tassi di conversione KM/Miglia, quindi cerchiamo su google: 1KM è uguale a 0.621371 miglia.

Step 2: Conosco i miei dati? l'esercizio fornisce una lista di km prestabiliti da convertire in miglia? Oppure devi creare una funzione che, inserito il kilometro, ti restituisce il miglio qualsiasi valore esso sia? (ciò cambia leggermente il modo in cui potresti scrivere il tuo programma)

Step 3: Definisci la tua funzione F, cosa deve fare? Convertire. Cosa? La tua X in Y. Quindi, la funzione convertitore, convertirà la X (KM) in Y(Miglia)

Per continuare gli step ho bisogno che tu risponda ai quesiti posti in precedenza. Spero tuttavia di averti leggermente indotto al problema dietro il convertitore!
Messaggio unito automaticamente:

Intanto procedo anche con l'esercizio numero 2:

Definisci una funzione che prenda in input tre numeri e restituisca il loro massimo (nell'esempio ne abbiamo messi di più)

Definiamo la nostra funzione: cosa deve fare? Trovare il numero più grande. Di cosa? Di numeri. Sotto quale oggetto sono contenuti i numeri? data

n (variabile) = data(lista numeri) con valore attuale [0] perchè non sappiamo chi sia ancora il numero più grande.

Per ogni x ( numero) in data(la nostra lista di numeri) Che deve fare la nostra funzione? Restituirmi il numero più grande quindi:

per ogni numero in data:
Se quel numero è maggiore di N (valore a cui abbiamo assegnato 0)
Quel numero diventa la nostra nuova N.
Quindi, a fine ciclo, "ritorna" il N più grande.

Ricordo che la funzione lavora con un ciclo, sicchè python analizzerà tutti i numeri inclusi in data finchè non finiranno e determinerà chi è il più grande.

Per questo esercizio, ti lascio il codice sottostante, il resto della community mi odierà ma sono convinto che ti servirà come base anche per i prossimi esercizi.

Python:
def maxnum(data):
    n = data[0]
    for x in data:
        if x > n:
            n = x
    return n

print(maxnum([0, 10, 15, 30, 50, -20]))

Guarda il codice in esecuzione live QUI
(Guarda veramente il codice in esecuzione, ti aiuterà a capire step-by-step cosa fa python con il codice
 
Aggiungo qualcosa di recursivo :

Python:
def maxnum(arr):
    if len(arr) <= 1:
        return arr[0]
    else:
        x = arr[0]
        arr.remove(x)
        z = maxnum(arr)
        if x >= z:
            print('x : {} >= {} : z'.format(str(x),str(z)))
            return x
        else:
            print('x : {} < {} : z'.format(str(x),str(z)))
            return z