2017-05-01 2 views
-1

누군가 나를 도울 수 있습니까? 각 문자는 'x'여야합니다. 그것은 작동하지 않습니다! 필자는 (suppously) xxx를 반환해야하는 함수를 만들었습니다. 예를 들어, 'hello'를 목록에 넣으면이 함수가 'xxxxx'를 반환하도록하고 싶습니다. 대신 문자열로 사용자 입력을 받고, 그 반복의파이썬 기능이 작동하지 않습니다

def encriptar(lletra): 
    lletra = 'x' 
    return lletra 

letra = [input("Introduce la cadena: ")] 
x=0 

for x in range(0,len(letra)): 
    letra[x]=encriptar(letra[x]) 
    print(letra[x]) 
    x+=1 

print(letra) 
+1

질문이 있으십니까? – manelfp

+1

'print ('x'* len (input ("Enter word")))'. 달성 할 수있는 방법 중 하나. –

+1

이것이 효과가 있다고 생각하지 않지만 for 루프가 x를 업데이트하는 것을 처리하면 루프에서 직접 증가시킬 필요가 없습니다. – SpoonMeiser

답변

1

letra = [input("Introduce la cadena: ")] 무엇을 반환하지 않는다는 것입니다 너는 기대한다. 문자열 인 하나의 요소 목록을 얻습니다. 그리고 어쨌든 문자열은 파이썬에서 변경할 수 없습니다.

빠르고 간단한 수정은 문자의 목록에 문자열을 변환하는 것입니다 : 지금 당신은 변경 가능한 목록을 가지고 있기 때문에

letra = list(input("Introduce la cadena: ")) 

과 각 문자를 대체 할 수

for x in range(0,len(letra)): 
    letra[x]=encriptar(letra[x]) 
    print(letra[x]) 

그리고 인쇄하기 전에 가입해야합니다.

print(''.join(letra)) 
+0

와우! 고마워, 많이 도와 줬어! – Abdullah

0

, 당신은 목록에 사용자 입력 문자열을 넣고 그 반복하고 있습니다.

letra = [input("Introduce la cadena: ")] 

은 사용자 유형 hello 경우, 이것은 당신이 ["hello"]letra 세트로 끝날 것을 의미한다. 즉, 항목이 문자열 인 1 개의 항목 목록입니다. 따라서 한 번에 한 문자 씩 대신 전체 문자열을 encriptar으로 전달합니다. 대신

는 할 : 당신이 장소의 기존 하나를 업데이트하지 않고 새 문자열을 구성해야합니다 있도록

letra = input("Introduce la cadena: ") 

그런 다음, 문자열 불변있는 문제로 실행하겠습니다.

쉽게 지능형리스트를 사용 문자의 목록을 구성 할 수 있습니다

:

new_chars = [ 
    encriptar(c) 
    for c in letra 
] 

을 그리고 그 목록에서 새 문자열을 만듭니다 문제에

letra = "".join(new_chars) 
관련 문제