2014-12-03 7 views
0

문자열을 연결하고 (논리를 수행하는) 재귀 함수가 있으며 논리가 완료되면 함수가 끝나고 결과가 변수에 반환됩니다. . 파이썬에서 재귀 적으로 문자열 연결

내 기능에 내가 "인쇄 STR"가 작동 할 때 (내 기능 iget,

import random 
    def test(str): 
     l = len(str) 
     if l >= 10: 
      return 0 
     str += random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') 
     test(str) 

    str = '' 
    test(str) 
    print str 

그래서 그것을 단순화 매우 큰 :

r 
rV 
rVG 
rVGF 
rVGFK 
rVGFKa 
rVGFKat 
rVGFKatY 
rVGFKatYN 
rVGFKatYNY 

하지만 str을 인쇄 할 때 (마지막 코드 줄)

+1

우선 str은 파이썬 함수이며, 더 나은 이름을 사용할 수 있습니다. – RvdK

답변

2

문자열이 파이썬에서 변경 가능하지 않습니다. 실제로 함수가 입력을 수정하도록하려면 return 문이나 문자 배열을 사용하십시오.

이 줄 :

str += random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') 

가 새로운 객체 str를 초기화하고 그것에 str + random.(...)을 할당합니다. 따라서 함수에 전달한 실제 객체는 기본적으로 포기되고 나중에 가비지 수집됩니다.

는 좋은 구현하지 비록이, 당신이 찾고있는 무엇의 종류 :

import random 
def test(input_string): 
    l = len(input_string)             
    if l >= 10: 
     return input_string 
    input_string += random.choice('abcdefghijklmnopqrstuvwxyz' 
            'ABCDEFGHIJKLMNOPQRSTUVWXYZ') 
    return test(input_string)            

input_string = ''               
input_string = test(input_string)           
print(input_string) 
+0

오, "돌아왔다"그리워, 정말 고마워. – Erik

-3

글로벌 지역 변수 대? 변수를 전역으로 설정하십시오.

+1

이것을 절대 시도하지 마라! – tamasgal

관련 문제