2014-02-19 2 views
0

함수 호출을 얻으려고하지만 인쇄 할 수 없습니다. 제발 도와주세요. 이 코드입니다 : 부울 표현 name == fooname == bar 대부분의 경우는 false로 평가되기 때문에왜 함수 코드가 작동하지 않습니다

def foo(): 
    name = input ('>>').lower().split() 
    for item in name: 
     if name == foo: 
      print ('foo here!') 
    else: 
     bar() 
def bar(): 
    name = input ('>>').lower().split() 
    for item in name: 
     if name == bar: 
      print ('bar here!') 


def start(): 
    print('Welcome Home') 
    name = input 
    foo() 


start() 
+0

이 작업을 수행 하시겠습니까? 그냥 코드를 읽고 나서 "if name == foo"가 아마도 당신이 원하는 것 (foo의 정의에서)이 아니라면 "name"(문자열 목록)과 "foo"(a 함수 객체)와 그것들은 절대 동일하지 않을 것입니다. –

답변

0

모두 print ('foo here!')print ('bar here!')이 실행되지 않습니다. 예를 들어, foo()이라는 정의의 부울 표현 name == foo에서 목록 name의 첫 번째 요소는 foo과 비교됩니다. foo은 객체 함수 foo() (일반적으로 디버깅 목적으로 사용됨)의 친숙한 문자열 표현을 반환합니다. print(foo)을 실행하여 실제로 foo()을 시도하고 인쇄 할 수 있으며 반환 된 값을 namefoo() (내 경우에는 <function foo at 0x7fad58f35d40> - 컴퓨터에 따라 다를 수 있음) 목록에 할당 할 수 있습니다. 그러면 name == foo이 true로 평가되므로 print ('foo here!')이 실행됩니다. 즉 here is how for loop works 말했다되는 : 당신의 name 목록에

enter image description here

첫 번째 요소는 item 변수에 할당됩니다. 그런 다음 for 루프의 본문이 실행됩니다. 본문이 실행 된 후 목록의 두 번째 요소 name은 for 루프의 본문이 다시 실행되기 전에 item 변수에 할당됩니다. 이 프로세스는 name 목록에 더 이상 요소가 없을 때까지 계속됩니다. 이제 print('foo here!')을 실행하려면 if 문의 진리 값을 true로 평가해야합니다.

다음은 사용자가 프로그램을 실행 한 후 foo를 입력 할 때 print('foo here!')이 실행되는 예제입니다. 정의 foo()에서

def foo(): 
    name = input('>>').lower().split() 

    for item in name: 
     if item == 'foo': 
      print('foo here!') 
     else: 
      bar() 

def bar(): 
    name = input('>>').lower().split() 

    for item in name: 
     if item == 'bar': 
      print('bar here!') 

print('Welcome Home') 
foo() 

name리스트의 첫 번째 요소는 string foo에, if name == 'foo'이 충족 따라서 조건과 비교된다. 다음은 실행 샘플입니다.

[[email protected] Python]$ ./foobar.py 
Welcome Home 
>>foo 
foo here! 
관련 문제