/ / Dlaczego funkcja nie zwraca nowej wartości [Python] - python

Dlaczego funkcja nie zwraca nowej wartości [Python] - python

Pytanie praktyczne polega na zwróceniu kostki wartości wejściowej, jeśli wartość jest podzielna przez 3. W przeciwnym razie zwróć false.

Struktura kodu jest kompilowalna, ale nie zwraca wartości kostki. Zamiast tego zwraca oryginalną wartość wejściową.

a=raw_input("Enter a number")
number=int(a)

def cube(number):

number=number**3
print" The answer is %s" % number
return number

def by_three(number):
if number%3==0:
return cube(number)
else:
return False

print" The answer is %s" % number

Odpowiedzi:

1 dla odpowiedzi № 1

Biała przestrzeń. Wcięcie twojego if komunikat.

def by_three(number):
if number%3==0:
return cube(number)
else:
return False

(edycja: z komentarza Ryana)

Aby naprawić błąd środowiska wykonawczego ... nigdy nie wywołujesz zdefiniowanych funkcji. Powinno to zrobić:

print "The answer is %s" % by_three(number)

Alternatywnie...

a=raw_input("Enter a number")
number=int(a)

if number%3==0:
number = number**3
else:
number = False

print "The answer is %s" % number

2 dla odpowiedzi nr 2

Musisz zadzwonić do funkcji by_three w kodzie. Dlaczego nie uzyskałeś pożądanego rezultatu, ponieważ funkcja została zadeklarowana, ale nigdy nie została wywołana. Prawidłowy kod podano poniżej:

a=raw_input("Enter a number ")
number=int(a)

def cube(number):
number=number**3
#print" The answer is %s" % number
return number

def by_three(number):
if number%3==0:
return cube(number)
else:
return False

# call the function `by_three` and pass number as a parameter
print" The answer is %s" % by_three(number)