2015-06-09 9 views
5

Sono nuovo alla programmazione. Ho un po 'di problemi con la codifica di Python (con la funzione def).Come si usa la funzione di input insieme alla funzione def?

Quindi in pratica il codice deve dare il numero più piccolo tra due numeri.

Domanda: codici di scrittura per eseguire le seguenti operazioni:

  1. definire una funzione smaller_num che prende in due numeri per determinare e restituire il numero più piccolo dei due.
    Chiedi all'utente per due numeri
    Utilizzare la funzione di determinare il numero più piccolo e visualizzare il risultato

così ho avuto l'input dell'utente invece di chiamare la funzione e il valore aggiunto all'interno della variabile.

Ecco come il mio codice è simile:

def smaller_num(x,y): 
    if x>y: 
     number= y 
    else: 
     number= x 
    return number 

smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num)) 

Come posso correggerlo? Per ora non funziona perché "x" non è definito. Ma sento di averli definiti chiaramente sia nella funzione def che nella funzione input. Quindi come posso risolvere questo?

Grazie per coloro che rispondono a questa domanda.

+2

Per favore, formatta il tuo codice – kvorobiev

+1

Devo lodarti molto per averci mostrato quello che hai provato invece di chiederci semplicemente come risolvere i tuoi compiti. Molto bene :). – TerryA

risposta

6

Non hai mai effettivamente definito x e a livello globale. L'hai definito solo nella funzione quando hai fatto def smaller_num(x, y).

Quando si esegue smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) , non si creano variabili chiamate x e , si stanno solo creando parametri per la propria funzione.

Al fine di risolvere il tuo codice, creare la variabile x e y prima di chiamare la funzione:

def smaller_num(x, y): ## Can be rephrased to def smaller_num(x, y): 
    if x > y:   ##       if x > y: 
     number = y  ##        return y 
    else:    ##       else: 
     number = x  ##        return x 
return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 
result = smaller_num(x, y) 
print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(result)) 

L'altro motivo il codice non funziona è perché non si è assegnato il valore restituito del funzione di nuovo in una variabile. Quando si esegue il comando return da una funzione e di nuovo quando si chiama la funzione, è necessario assegnare il valore a una variabile, ad esempio: result = smaller_num(x, y).

Quando hai chiamato la tua funzione, non hai mai assegnato il valore a una variabile, quindi è stato sprecato.


Inoltre, stai usando Python 3 o 2.7? In python 3 utilizzando input() verrà restituita una stringa e per convertirla in un numero intero, è possibile chiamare int() attorno alla funzione input().

+0

Apprezzerei molto il feedback per sapere perché il mio post è stato downvoted, grazie :) – TerryA

+0

Non è vero, puoi chiamare e assegnare xey come 'raw_input' nei tuoi parametri e funziona perfettamente bene. La mancanza di memorizzazione del risultato è l'unico problema. – SuperBiasedMan

+0

@SuperBiasedMan A meno che non legga il codice errato, ciò che ho indicato dovrebbe essere un errore, poiché nell'ultima riga dice 'str (x)', che non è mai stato creato globalmente. Lo stesso con 'str (y)' – TerryA

3

Ciò funzionerà:

def smaller_num(x,y): 

    if x>y: 
     number= y 
    else: 
     number= x 
    return number 


x = input("Enter first number:-") 

y = input("Enter second number:-") 

smaller = smaller_num(x,y) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller)) 
1

questo dovrebbe funzionare:

def smaller_num(x,y): 
    if x>y: 
     number = y 
    else: 
     number = x 
    return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num(x,y))) 
0

non è possibile utilizzare operatore di assegnazione all'interno del DEF, ma

print(str(smaller_num(input("Enter first number:-"),input("Enter second number:-")))) 

funziona bene.

Problemi correlati