2013-11-25 5 views
2

저녁/아침배열에서 공백을 0으로 바꾸기 (파이썬)

나는 힐 사이퍼 (hill cipher) 프로그램을 만들기 위해 지난 이틀 동안 노력 해왔다. 지금까지만 문제가 있었고 공간을 0으로 바꿀 수있는 방법을 찾지 못했습니다. 나는 (또는 내 경우에는) 작동하지 않을 수있는 다른 조건을 시도해 보았는데, 화면에 아무것도 표시되지 않거나 -96에서 ascii 값을 얻지 못했습니다. 이것은 내가 지금까지 무엇을 가지고 있습니다 :

import math 
import sys 
import string 
import numpy as np 
from numpy import matrix 

msg = sys.argv[1] 
key1 = sys.argv[2] 
key2 = sys.argv[3] 
key3 = sus.argv[4] 
key4 = sys.argv[5] 
base = sys.argv[6] 

key_matrix = np.matrix([[int(key1), int(key3)], [int(key2), int(key4)]]) 
lettconv = [ord(lett) - 96 for lett in msg] 

코드가 미안, 조금 불쾌한 수 있습니다, 나는 아직도 일반적으로 파이썬과 프로그래밍 멍청한 놈입니다. 아무 것도 좋을 것입니다, 나는 오히려 그것을 어떻게 해야할지에 대한 설명을 가지고있을 것입니다. 왜냐하면 그것이 나의 유니에 할 일이기 때문에, 저는 꽤 길을 잃고 약간의 지침을 사용할 수 있습니다.

건배!

답변

2

그래서 이것을 올바르게 이해하고 있다면 목록 이해에서 문자가 공백 인 경우 0 값을 사용하고 그렇지 않으면 ord(lett) - 96을 사용하려고합니다.

0 if lett == ' ' else ord(lett) - 96 

을 이해에이 퍼팅 : 다음과 같이이 논리를 표현하는 conditional expression을 사용할 수 있습니다

lettconv = [0 if lett == ' ' else ord(lett) - 96 for lett in msg] 
+0

오 남자, 나는 심지어 일을하려고했다, 그것에 대해 생각하지 않았던 상태 outsite 내가하고 있었던 lettconv 어레이는 아무 것도 보여주지 못했다. 고마워요! 그것은 지금 작동 :) – Koonetz

+0

@ Koonetz 대답을 수락 잊지 마 :) – flornquake