Roundup Tracker - Issues

Issue 2551031

classification
fix 'mach n mit Funktionsobjekt'
Type: resource usage Severity: minor
Components: Versions: devel
process
Status: closed invalid
:
: :
Priority: :

Created on 2019-03-15 10:36 by When in trouble, go to the library, last changed 2019-03-26 19:45 by schlatterbeck.

Messages
msg6396 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-15 10:36
'''Funktion soll
    Funktionsobjekt f und Zahl n als Argumente entgegennehmen
    das Funktionsobjekt n-mal hintereinander ausführen'''


def mach_n(f,n):
    if n <= 0:
        return
    else:
        f
        mach_n(f,n-1)

f = beliebige_funktion # wild card for any function f

def beliebige_funktion(): #define function f here
    Body

#Test

f=print_doof()

def print_doof():
	print('doof')

RUN MODULE

mach_n(f,6) RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
Traceback (most recent call last):
  File "C:\Users\Henrike Schwenn\Roaming\Programs\Python\Python36\eigene
Funktionen\rekursive Funktionen\mach_n mit Funktionsobjekt.py", line 13,
in <module>
    f = beliebige_funktion # wild card for any function f
NameError: name 'beliebige_funktion' is not defined
>>> 

TYPE: SYNTAX
msg6397 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-15 10:40
def mach_n(f,n):
    if n <= 0:
        return
    else:
        f
        mach_n(f,n-1)

REMOVE WILD CARDS INTO COMMENTS AS TO NOT DISTURB THE CODE

# f = beliebige_funktion  wild card for any function f

#define function f here
    

#Test

f=print_doof()

def print_doof():
	print('doof')


mach_n(f,6)

RUN MODULE

 RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
Traceback (most recent call last):
  File "C:\Users\Henrike Schwenn\Roaming\Programs\Python\Python36\eigene
Funktionen\rekursive Funktionen\mach_n mit Funktionsobjekt.py", line 20,
in <module>
    f=print_doof()
NameError: name 'print_doof' is not defined
>>> 

TYPE: SYNTAX
msg6398 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-15 10:45
CHANGE INDENTION OF BODY 'print('doof')'

#Test

f=print_doof()

def print_doof():
    print('doof')


mach_n(f,6)

RUN MODULE

Traceback (most recent call last):
  File "C:\Users\Henrike Schwenn\Roaming\Programs\Python\Python36\eigene
Funktionen\rekursive Funktionen\mach_n mit Funktionsobjekt.py", line 20,
in <module>
    f=print_doof()
NameError: name 'print_doof' is not defined
>>> 

TYPE: SYNTAX
HYPOTHESIS: I HAVE TO DEFINE THE FUNCTION BEFORE ASSIGNING IT TO F
msg6399 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-15 10:51
TEST
HYPOTHESIS: I HAVE TO DEFINE THE FUNCTION BEFORE ASSIGNING IT TO F

#def beliebige_funktion():  define function f here
    
# f = beliebige_funktion    assign function f to f

#Test

f=print_doof()

def print_doof():
    print('doof')


mach_n(f,6)

RUN MODULE

RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
Traceback (most recent call last):
  File "C:\Users\Henrike Schwenn\Roaming\Programs\Python\Python36\eigene
Funktionen\rekursive Funktionen\mach_n mit Funktionsobjekt.py", line 19,
in <module>
    f=print_doof()
NameError: name 'print_doof' is not defined
>>> 
TYPE: SYNTAX
HYPOTHESIS: I FORGOT TO FIX THE ORDER OF DEFINITIONS WHEN ACTUALLY
CALLING UP THE FUNCTION X)
msg6400 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-15 11:03
DEFINE 'print_doof' BEFORE ASSIGNING IT TO f

#def beliebige_funktion():  define function f here
    
# f = beliebige_funktion    assign function f to f

#Test

def print_doof():
    print('doof')

f=print_doof()

mach_n(f,6)

REREAD THE CODE CAREFULLY
RUN MODULE

 RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
doof
>>> 

RESULT: RETUNRS 'doof' JUST ONCE
ERROR MESSAGE: NONE
-> TYPE: SEMANTICS/LOCIC
BUG DESCRIPTION:
PYTHON DOESN'T SEEM TO REALIZE IT'S SUPPOSED TO REPEAT mach_n(f,n) UNTIL n=0
-> THERE MUST BE SOMETHING WRONG WITH
def mach_n(f,n):
    if n <= 0:
        return
    else:
        f
        mach_n(f,n-1)
THAT IS NOT A SYNTAX ERROR

PYTHON MUST HAVE UNDERSTOOD THE FOLLOWING PART OF THE DEFINITION
def mach_n(f,n):
    if n <= 0:
        return
    else:
        f
CORRECTLY, OTHERWISE IT COULDN'T HAVE RETURNED F 
-> THE PROBLEM MUST BE LOCATED IN THE LAST LINE OF THE BODY
mach_n(f,n-1)
msg6409 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:04
REVISING HYPOTHESIS THAT THE ERROR MUST BE LOCATED IN THE LAST LINE OF
THE BODY
mach_n(f,n-1)

COMPILER COULD JUST HAVE EXECUTED f

APPROACH:
COMPARE  

def mach_n(f,n):
    if n <= 0:
        return
    else:
        f
        mach_n(f,n-1)

TO ITS MODEL

def print_n(s,n):
    if n <=0:
        return
    print (s)
    print_n(s,n-1)

BY DOWNEY WHICH WORKS. IS THERE A DIFFERENCE WITHIN THE RESPECTIVE CODE?

ANSWER: THERE IS NO else: IN def print_n(s,n):, THE CODE FOR n > 0 IS
INDENTED LIKE else: WOULD HAVE BEEN, EXACTLY BELOW if

-> NEXT STEP:
ERASE else: IN def mach_n(f,n):
INDENT  f
        mach_n(f,n-1)
LIKE print (s)
     print_n(s,n-1)IN def print_n(s,n):
msg6410 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:08
def mach_n(f,n):
    if n <= 0:
        return
    f
    mach_n(f,n-1)

#def beliebige_funktion():  define function f here
    
# f = beliebige_funktion    assign function f to f

#Test

def print_doof():
    print('doof')

f=print_doof()

mach_n(f,6)

RUN MODULE

RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
doof
>>> 

DID I MISS SOMETHING IN COMPARING?
msg6411 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:13
ANSWER: NO

COULD PYTHON JUST HAVE EXECUTED print('doof')?

SOLUTION:

mach_n(print_doof,6)

RUN MODULE 

 RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
doof
>>> 

NO VISIBLE EFFECT
msg6412 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:17
f=print_doof()

mach_n(print_doof(),6)

TRIED BY ADDING BRACES

RUN MODULE 

RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
doof
doof
>>> 

print_doof()IST JUST EXECUTED TWICE. PYTHON CLEARLY DOESN'T GET THE
RECURSIVE COMMAND
msg6413 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:27
MAYBE PYTHON JUST DOESN'T GET f IS SUPPOSED TO BE A FUNCTION

LET'S TRY

#def beliebige_funktion():  define function f here
    
# f() = beliebige_funktion    assign function f to f

#Test

def print_doof():
    print('doof')

f() = print_doof()


def mach_n(f,n):
    if n <= 0:
        return
    f()
    mach_n(f,n-1)
    

mach_n(f,6)

RUN MODULE

MESSAGE: SYNTAX ERROR. CAN'T ASSIGN f() = print_doof()
TO FUNCTION CALL
msg6414 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:29
THE BRACES ARE ACTUALLY NOT PART OF A FUNCTION'S NAME
SO LET'S TRY REMOVING THEM

def print_doof():
    print('doof')

f = print_doof


def mach_n(f,n):
    if n <= 0:
        return
    f
    mach_n(f,n-1)
    

mach_n(f,6)

RUN MODULE

 RESTART: C:\Users\Henrike
Schwenn\Roaming\Programs\Python\Python36\eigene Funktionen\rekursive
Funktionen\mach_n mit Funktionsobjekt.py 
>>> 

PYTHON DOESN'T RETURN ANYTHING
msg6415 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:33
TRY ADDING BRACES TO f IN ORDER TO SHOW THAT f IS THE NAME OF A
FUNCTION; EVEN THOUGH THE BRACES ARE NOT PART OF THE FUNCTION'S NAME

def print_doof():
    print('doof')

f() = print_doof


def mach_n(f,n):
    if n <= 0:
        return
    f()
    mach_n(f,n-1)
    

mach_n(f,6)

RUN MODULE

MESSAGE: SYNTAX ERROR. CAN'T ASSIGN f() = print_doof
TO FUNCTION CALL
msg6416 Author: [hidden] (When in trouble, go to the library) Date: 2019-03-22 11:36
NEXT STEP

DEFINE f AS A FUNCTION

def f():
    f
History
Date User Action Args
2019-03-26 19:45:39schlatterbecksetstatus: new -> closed
nosy: - When in trouble, go to the library
resolution: invalid
2019-03-22 11:36:41When in trouble, go to the librarysetmessages: + msg6416
2019-03-22 11:33:39When in trouble, go to the librarysetmessages: + msg6415
2019-03-22 11:29:15When in trouble, go to the librarysetmessages: + msg6414
2019-03-22 11:27:07When in trouble, go to the librarysetmessages: + msg6413
2019-03-22 11:17:42When in trouble, go to the librarysetmessages: + msg6412
2019-03-22 11:13:22When in trouble, go to the librarysetmessages: + msg6411
2019-03-22 11:08:50When in trouble, go to the librarysetmessages: + msg6410
2019-03-22 11:04:36When in trouble, go to the librarysetmessages: + msg6409
2019-03-15 11:03:08When in trouble, go to the librarysetmessages: + msg6400
2019-03-15 10:51:24When in trouble, go to the librarysetmessages: + msg6399
2019-03-15 10:45:43When in trouble, go to the librarysetmessages: + msg6398
2019-03-15 10:40:13When in trouble, go to the librarysetmessages: + msg6397
2019-03-15 10:36:17When in trouble, go to the librarycreate