중첩 기능은 Pythonic입니까?



Answers

두 함수를 무한히 호출하면 실제로는 최상의 제어 흐름이 아닙니다. while 루프를 사용하면 더 좋을 것입니다.

def getinput(i):
    while i:    
        if i == 1:
            first = input("Would you like A or B? ")
            i = inputchecker(1, first)
        elif i == 2:
            second = input("Would you like C or D? ")
            i = inputchecker(2, second)

def inputchecker(n, userinput):          
    if n == 1:
        if userinput in ("A", "B"):
            print("You chose wisely.")
            return 2
        else:
            getusage(i)
            return i
    elif n == 2:
        if userinput in ("C", "D"):
            print("You chose wisely.")
        else:
            getusage(i)
            return i

당신이 그것을 하나의 기능으로 간소화한다면 아마도 더 좋을 것입니다. 헤어질 필요가 없습니다.

Question

내 R.Pi에서 파이썬을 배우고 있으며 작은 걸림돌을 쳤다. 다음 코드는 "getinput"함수로 되돌아 오는 동안 메모리에서 "inputchecker"함수를 열어 둘 것입니다.

이 나쁜 코드입니까? 그것은 매우 다르게 수행되어야 하는가?

def getinput(i):    
    if i == 1:
        first = input("Would you like A or B? ")
        inputchecker(1, first)
    elif i == 2:
        second = input("Would you like C or D? ")
        inputchecker(2, second)

def inputchecker(n, userinput):    
    def _tryagain_(n):
        usage(n)
        getinput(n)        
    if n == 1:
        if userinput in ("A", "B"):
            print("You chose wisely.")
            getinput(2)
        else:
            _tryagain_(n)
    elif n == 2:
        if userinput in ("C", "D"):
            print("You chose wisely.")
        else:
            _tryagain_(n)

def usage(u):
    if u == 1:
        print("Usage: Just A or B please.") 
    if u == 2:
        print("Usage: Just C or D please.") 


getinput(1)



"pythonic"에 대한 질문에 대답하려면 : python은 함수형 프로그래밍을 할 수 있지만, 그것을 위해 설계된 것은 아닙니다 . 구문은 약간 꼴 사나 지 않으며 언어에 일부 기능 이 없습니다. 누락 된 기능 중 일부는 재귀가 느리다 는 것을 의미합니다.

그래서 나는 imperitave 프로그래밍을 "pythonic"




Links