2014-10-01 8 views
0

나는 이것을 얻지 못하는 것 같습니다. 모듈 사이에 매개 변수를 전달하는 방법을 이해하지 못했습니다. 이것이 나에게 정말 간단하게 보이지만 어쩌면 나는 그것을 얻지 못하고있다. 나는 Python을 처음 접했지만 프로그래밍 경험이있다.파이썬 매개 변수 전달 매개 변수

def main(): 

    weight = input("Enter package weight: ") 

    return weight 

def CalcAndDisplayShipping(weight): 

    UNDER_SIX = 1.1 
    TWO_TO_SIX = 2.2 
    SIX_TO_TEN = 3.7 
    OVER_TEN = 3.8 

    shipping = 0.0 

    if weight > 10: 
    shipping = weight * OVER_TEN 
    elif weight > 6: 
    shipping = weight * SIX_TO_TEN 
    elif weight > 2: 
    shipping = weight * TWO_TO_SIX 
    else: 
    shipping = weight * UNDER_SIX 

    print ("Shipping Charge: $", shipping) 


main(CalcAndDisplayShipping) 

내가 이것을 실행하면 I 얻을 : (NUM) 형식 오류 : unorderable 유형 : 기능()> INT()

이 사람이 나에게 이것을 설명 할 수 포장 무게를 입력?

+0

이 코드의 어느 곳에서나 파이썬 모듈을 사용하지는 않습니까? 또한이 코드는 main()이 인자를받지 못하도록 정의 되었기 때문에 완전히 다른 오류를 일으키지 만 하나 (호출 가능)를 전달합니다. – TML

+0

문제의 원인은 파이썬 3에서'input()'이 문자열을 반환한다는 것입니다. 이것은 Python 2에서 문제가되지 않습니다.이 미묘한 차이를 고려할 수 있도록 Python 3을 사용하고 있음을 나타내야합니다. 나는'python-3.x'로 질문에 태그를 붙였다. – mhawke

답변

1

한가지는 파이썬에 메인이 필요 없습니다. 그것을하는 또 하나의 방법은 그것이 일이라는 것입니다.

메인이 정말로 필요합니까?

import os 


def CalcAndDisplayShipping(weight): 

    UNDER_SIX = 1.1 
    TWO_TO_SIX = 2.2 
    SIX_TO_TEN = 3.7 
    OVER_TEN = 3.8 

    shipping = 0.0 

    if weight > 10: 
     shipping = weight * OVER_TEN 
    elif weight > 6: 
     shipping = weight * SIX_TO_TEN 
    elif weight > 2: 
     shipping = weight * TWO_TO_SIX 
    else: 
     shipping = weight * UNDER_SIX 

    print ("Shipping Charge: $", shipping) 

weight = float(input("Enter package weight: ")) 

CalcAndDisplayShipping(weight) 
0

난 당신이 의미 있다고 생각 :

CalcAndDisplayShipping(main()) 

main()를 호출 CalcAndDisplayShipping() 인수로 반환 값을 전달합니다. 당신이 파이썬 script_name.py 같은 파이썬 인터프리터를 사용하여이 스크립트를 실행하는 경우

0
def CalcAndDisplayShipping(weight): 

    UNDER_SIX = 1.1 
    TWO_TO_SIX = 2.2 
    SIX_TO_TEN = 3.7 
    OVER_TEN = 3.8 

    shipping = 0.0 

    if weight > 10: 
     shipping = weight * OVER_TEN 
    elif weight > 6: 
     shipping = weight * SIX_TO_TEN 
    elif weight > 2: 
     shipping = weight * TWO_TO_SIX 
    else: 
     shipping = weight * UNDER_SIX 

    print ("Shipping Charge: $", shipping) 

if __name__ == '__main__': 

    weight = float(input("Enter package weight: ")) 
    CalcAndDisplayShipping(weight) 

, __name__ 변수 값은 '__main__' 될 것입니다.

이 모듈을 다른 모듈로 가져 오는 경우 __name____main__이 아니며 기본 섹션을 실행하지 않습니다.

이 모듈을 개별 스크립트로 실행하는 동안 아무 것도하지 않으려면이 기능을 사용할 수 있습니다.

'if 조건'은 모듈을 개별 스크립트로 실행하는 경우에만 충족됩니다.

+0

이 스크립트를 개별 스크립트로 실행중인 경우 __name__ 변수 –

+0

python script_name.py와 같은 Python 인터프리터를 사용하여이 스크립트를 실행하는 경우 __name__variable 값은 '__main__'이됩니다. 이 모듈을 다른 모듈로 가져 오는 경우 __name__은 __main__이 아니며 __main__ 섹션을 실행하지 않아도됩니다. 따라서이 모듈을 개별 스크립트로 실행하는 동안 아무 것도하지 않으려면이 기능을 사용할 수 있습니다. –

+0

제안 해 주셔서 감사합니다. 나는 그것을 편집했다. –