2016-10-22 4 views
0

Hers가 내 코드 도전과 코드입니다. 왜 제대로 작동하지 않는지 모르겠다.파이썬에서는 요소와 인덱스에 더하여 원하는 인덱스를 반환하는 문자열을 구문 분석하려고 시도합니다.

-이 형식으로 인코딩 된 문자열의 단일 매개 변수를 사용하는 plaintext라는 함수를 작성하십시오. 메시지의 각 문자 앞에 숫자와 일련의 기타 문자. 숫자는 메시지의 실제적이고 의미있는 문자 앞에 오는 문자 수와 일치해야합니다. 그것은 한 다음

""" my pseudocode: 
    #convert string to a list 
    #enumerate list 
    #parse string where the element and the index plus one returns the desired index 
    #return decoded message of desired indexes """ 

encoded_message = "0h2ake1zy" 
#encoded_message ="2xwz" 
#encoded_message = "0u2zyi2467" 

def plaintext(string): 
    while(True): 
     #encoded_message = raw_input("enter encoded message:") 
     for index, character in enumerate(list(encoded_message)): 
      character = int(character) 
      decoded_msg = index + character + 1 
     print decoded_msg 
+3

* "제대로 작동하지 않음"*에 대한 어떤 사전? – jonrsharpe

+0

여기 사람들은 숙제와 너무 흡사 한 질문을 보통 하향 변환합니다. 먼저 while (True) 루프에 대해 스스로에게 질문하십시오. 그것은 코드 루프를 영원히 만듭니다. – cbare

+0

for 루프를 사용했을 때 for 루프를 사용했을 때 디코딩 할 첫 글자를 반복하지 않았기 때문에 while 루프를 사용했습니다. 이제 문자열을 반복 할 때 문자열에 값 오류가 발생합니다. character = int (character) – Mar

답변

0

몇 가지 힌트가 있습니다.

먼저 어떤 루핑 구문을 사용할지 결정하십시오. Python은 개별 문자를 반복하고 루프의 인덱스를 반복하며 루프를 제공합니다. while 루프와 for 루프는 모두 원하지 않습니다.

문자열을 "0h", "2ake", "1zy"그룹으로 처리하여 첫 번째 예제 문자열을 얻습니다. 루프를 종료하는 조건은 무엇입니까?

이제 decoded_msg = index + character + 1 라인을 살펴보십시오. 디코딩 된 문자열을 구성하려면 숫자의 값에 따라 문자열 자체에 색인을 지정해야합니다. 그래서,이 줄에는 x를 위해서 encoded_message[x]과 같은 것을 넣어야합니다. 숫자를 사용해서 알아 내야 만합니다.

또한 이동하면서 문자를 누적하고 싶을 것입니다. 따라서 빈 결과 문자열 decoded_msg=""으로 루프를 시작하고 루프 반복마다 문자를 decoded_msg += ...에 추가해야합니다.

이 답변을 제공하는 것보다 조금 더 도움이되기를 바랍니다.

+0

예! 이것은 정확히 내가 찾던 힌트입니다. 고마워요! – Mar

1

당신은 문자열의 문자 반복을 갈 필요가 문자열 형태로 디코딩 된 단어를 반환하고, 각 반복에서 지정된 수의 문자를 건너 뛰고해야 : 여기

def plaintext(s): 
    res = '' 
    i = 0 
    while i < len(s): 
     # Skip the number of chars specified 
     i += int(s[i]) 

     # Take the letter after them 
     i += 1 
     res += s[i] 

     # Move on to the next position 
     i += 1 

    return res 
+0

이 솔루션에는 처음에 같은 문제가 있습니다. 첫 번째 위치이며 실제로 문자열을 반복하지 않습니다. 그래도 고마워. – Mar

+0

@Mar 그것을 실행 해 보셨습니까? 인코딩 된 "0h2ake1zy"예제에서 "hey"가 올바르게 생성됩니다. – Mureinik

+0

내가 그것을 달렸을 때 단지 – Mar