Topic: Assegnare un nome al risultato di una funzione per richiamarlo in altra funzione  (Letto 202 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline salvagrasso

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Buongiorno e scusate se la domanda vi sembrerà troppo da principianti: dato un input ’n’,  creo (utilizzando ‘if’) una funzione in grado di generare un altro valore a seconda dell’input  di n (esempio: se n è compreso tra 0 e 10 il valore sarà 1, se n è compreso tra 11 e 20 il valore sarà 2 e se n è maggiore di 20 il valore è 3). Ho necessità poi di utilizzare i valori così generati (1, 2 o 3) in un’ altra funzione (esempio: somma tra il dato ottenuto - come detto 1, 2 o 3 -  e un altro dato) . Come faccio ad attribuire un nome (esempio ‘z’) al  risultato (1, 2 o 3) della prima funzione, in modo da richiamarlo in seguito nella nuova funzione?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 413
  • Punti reputazione: 0
    • Mostra profilo
Così, p.e.
>>> def max_tre_decine(value):
if value > 30: return 3
if value % 10:
return value // 10 + 1
else:
return value // 10


>>> z = max_tre_decine(25)
>>> z
3
>>>


Giacché stai inziando per hobby, leggi questo, servirà

Offline salvagrasso

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
grazie. Provando e riprovando ho risolto così:

n=eval(input('n: '))
a='a'
if n <=10:
   a=1
elif n<=20:
   a=2
else:
a=3

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 413
  • Punti reputazione: 0
    • Mostra profilo
grazie. Provando e riprovando ho risolto così:

n=eval(input('n: '))

"provare e riprovare" è necessario ad imparare, non ci sono le "funzioni" da Te indicate nel primo post ma va bene anche così.

Un consiglio : utilizza con ponderazione "eval()", potrà essere comoda ma potenzialmente è pericolosa, te ne mostro il perché:
>>> var = 'print("Ciao @salva")'
>>> eval(var)
Ciao @salva
>>>

Come puoi vedere, ho impostato nella stringa "var" del codice python, codice che è stato eseguito, "eval" interpreta, compila ed esegue eventuale codice sorgente contenuto nella variabile da valutare
>>> help('eval')
Help on built-in function eval in module builtins:

eval(source, globals=None, locals=None, /)
    Evaluate the given source in the context of globals and locals.
   
    The source may be a string representing a Python expression
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.

>>>

è quindi da utilizzare con consapevolezza, i risultati potrebbero essere pesanti, altrimenti.

Per la conversione di tipo delle variabili esistono apposite funzioni nella libreria di base, ti suggerirei di vedertele tutte, comprendi ciò che fanno e tienile presenti.
Nello specifico, avresti potuto utilizzare "int()"
>>> var = '10'
>>> var < 10
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    var < 10
TypeError: '<' not supported between instances of 'str' and 'int'
>>> int(var) < 10
False
>>> int(var) == 10
True


Ciao
« Ultima modifica: Gennaio 18, 2021, 08:00 da nuzzopippo »