2013-06-03 2 views
0

나는 파이썬으로 나를 생각하게하는 방법을 연구 중이다. 나는 숫자를 취하고 사전에서 상응하는 "가치"를주는 간단한 생각을 가지고있다.파이썬에서 아주 간단한 암호 기능. 사전의 키와 목록 비교

그래서 기본적으로 주어진 숫자 또는 숫자를 갖고 싶습니다. 그 숫자를 단어로 바꾸십시오.

전체적으로 전체보기는 1에서 26까지의 키를 가진 사전을 가지며 값은 a에서 z로갑니다. 따라서 1은 "a"와 같고 26은 "z"와 같습니다.

나는 변수 d = 1을 가지며 'a'의 결과를 얻을 필요가있다. 그런 다음 (1,2,3,4)와 같은 목록에 대해이 함수의 크기를 늘리십시오. 출력은 a, b, c, d가됩니다.

여기까지 제가 지금까지 있습니다.

d = 1 

def code_scram(x): 


    c = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'} 

    scram = "" 

    for i in d: 
     if i in c: 
      scram += c[i] 
    return scram 

print code_scram(d) 

그러나 계획대로 작동하지 않습니다.

답변

1

for 루프는 d이 아니라 x을 반복해야합니다.

def code_scram(x): 
    c = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'} 
    scram = "" 
    for i in x: 
     if i in c: 
      scram += c[i] 
    return scram 

print code_scram([1,2,3,4]) 

결과 :

abcd 

그래서 d이 작동하지 않습니다 정수를 전달 만이 목록에 대한 작동 기능. 목록에 대신 전달하십시오. 당신이 기능은 목록 고독한 정수 작동하려면

d = [1] 
print code_scram(d) 

, 당신은 유형 검사를 수행하고, 필요에 따라 변환 할 수 있습니다.

def code_scram(x): 
    if isinstance(x, int): 
     x = [x] 
    c = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'} 
    scram = "" 
    for i in x: 
     if i in c: 
      scram += c[i] 
    return scram 

d = 1 
print code_scram(d) 

결과 :

a 
+0

감사 케빈! 나는 지금 더 잘 이해한다. –

+1

그냥 제안 ---'if isinstance (x, collections.Iterable)'대신 –