2015-06-09 14 views
5

Jestem nowy w programowaniu. Mam problem z kodowaniem Pythona (z funkcją def).Jak korzystać z funkcji wprowadzania wraz z funkcją def?

W zasadzie kod musi podawać mniejszą liczbę z 2 liczb.

Pytanie: kody napisać do wykonywania następujących zadań:

  1. Zdefiniuj smaller_num funkcji, które odbywają się w dwóch numerów do ustalenia i powrócić mniejszą liczbę dwóch.
    Zapytaj użytkownika o dwa numery
    Użyj funkcji do określenia mniejszej liczby i wyświetli wynik

więc musiałem wprowadzanych przez użytkownika zamiast wywoływania funkcji i wartości dodanej wewnątrz zmiennej.

ten sposób mój kod wygląda następująco:

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)) 

Jak mogę go poprawić? Na razie nie działa, ponieważ "x" nie jest zdefiniowane. Ale czuję, że zdefiniowałem je wyraźnie zarówno w funkcji def i funkcji wejściowej. Jak mogę to naprawić?

Dziękuję tym, którzy odpowiadają na to pytanie.

+2

Proszę, sformatuj swój kod – kvorobiev

+1

Muszę ci bardzo podziękować za pokazanie nam tego, co próbowałeś, zamiast po prostu pytać nas, jak rozwiązać twoje zadania. Dobra robota :). – TerryA

Odpowiedz

6

Nigdy nie definiowałeś globalnie x i y. Zdefiniowałeś go tylko w funkcji, gdy wykonałeś def smaller_num(x, y).

Kiedy robisz smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) , nie tworzysz zmiennych o nazwach x i y, dopiero tworzysz parametry swojej funkcji.

Aby rozwiązać swój kod, należy utworzyć zmienną x i y przed wywołaniem swoją funkcję:

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)) 

Drugi powód, Twój kod nie działa to, ponieważ nie jesteś przypisywaniu zwracanej wartości odnośnej powrócić do zmiennej. Gdy otrzymujesz coś z funkcji i ponownie, gdy wywołasz funkcję, musisz przypisać wartość do zmiennej, tak jak ja: result = smaller_num(x, y).

Po wywołaniu funkcji nigdy nie przypisano jej do zmiennej, więc została zmarnowana.


Czy używasz też Pythona 3 lub 2.7? W pythonie 3 użycie parametru input() zwróci ciąg znaków, a w celu przekonwertowania go na liczbę całkowitą można wywołać funkcję int() wokół funkcji input().

+0

Naprawdę doceniam informacje zwrotne, ponieważ wiem, dlaczego mój wpis został wycofany, dziękuję :) – TerryA

+0

To nieprawda, możesz wywołać i przypisać x i y jako 'raw_input' w twoich parametrach i działa idealnie dobrze. Brak przechowywania wyniku jest jedynym problemem. – SuperBiasedMan

+0

@SuperBiasedMan Jeśli nie czytam kodu źle, to wskazałem, że powinien to być błąd, ponieważ w ostatnim wierszu jest napisane 'str (x)', które nigdy nie było tworzone globalnie. To samo z 'str (y)' – TerryA

3

to będzie działać:

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

to powinno działać:

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

nie można użyć operatora przypisania wewnątrz def, ale

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

działa dobrze.

Powiązane problemy