다음 완료될 수 있는 방법은?
characters = ['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''t''u''v''w''x''y''z']
numbers = ['1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24']
text = raw_input(' Write text: ')
이 같은 일이 또 어떤가.
print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]
[ord] [1] [목록 번역] [2] ASCII 문자 코드
input = raw_input('Write Text: ')
input = input.lower()
output = []
for character in input:
number = ord(character) - 96
output.append(number)
print output
그러나 이 같은 일이 더 잘 않습니다. 이게 무슨 일이야 합니다 전에 내 첫 번째 대답을 제대로 알려들지 이해할 수 있다. 여기서 모든 것은 매우 간단한 표준 파이썬. Ord '는' 이 유의할 시작된다. ord) 의 거의 모든 순서수 높은 수준의 언어 할 수 있으며, 이 유형의 기능을 사용할 수 있습니다. 이를 통해 문자와 숫자 표현에 대한 너희에의 매핑에서는. 이 보색으로 작동입니다 ord 호출됨 크레.
chr(ord('x')) == 'x' # for any character, not just x.
이 경우 a 는 97/ 자신을 위해 점심시간요 서수 (세 번째 전체 ASCII 문자 집합 위에 링크 I 게시하기를 보여주게 된다.) 소문자 () 는 각 maxvalorarray 97/ 122 (26 자) 따라서 모든 순서수 방금 subtract 96 에서 소문자 알파벳 & # 39 이용할 경우 그 자리를 얻을 수 있습니다, a& # 39. = 1. 그래서 b& # 39, & # 39 의, 서수, = 98 c& # 39, & # 39;; = 99, etc. B& # 39, & # 39 subtract 96 때;; = 2, & # 39, c& # 39. = 3, etc.
난 이제 막 미삭 초기 솔루션이므로 게시하기를 일부 파이썬 속임수 나열하십시오 확인하실 수 있습니다 '라는 것이다. 하지만, 난 내가 있는 만큼, t # 39 wouldn& 초점을 맞추고 있는 언어 학습 문제를 해결할 수 있는 모든 , 집중할 것이라고 ord) 는 친구. 이렇게 하면 좋겠다.
[1]: http://docs.python.org/library/functions.html # ord [2]: http://docs.python.org/tutorial/datastructures.html # 지능형 목록
사용하려는 경우 한 번 계산 결과, 이 변환 많이유 고려해보십시오 사전이 있다.
>>> import string
>>> di=dict(zip(string.letters,[ord(c)%32 for c in string.letters]))
>>> di['c']
3
이 수치는 매우 빠른 vs 반복 사전 조회를 통해 매년 바뀌엇어요 가능하다.
>>> for c in sorted(di.keys()):
>>> print "{0}:{1} ".format(c, di[c])
# what you would expect....
너무 기본적인 않을 수 있지만, 이:
>>> char1 = ['a''b''c''d''e''f''g''h''i''j''k''l'
'm''n''o''p''q''r''s''t''u''v''w''x''y''z']
이 매우 다릅니다.
>>> char2 = ['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z']
첫 번째 쉼표 없이, 어떤 질문을 한 요소 목록 (26) 가 보유하고 있는 요소점 구체화하십시오. 두 번째 요소 목록 (26) 는 각 문자 한 개를 길이.
인쇄하려면 경우 각:
>>> print char1, len(char1), len(char1[0])
['abcdefghijklmnopqrstuvwxyz'] 1 26
>>> print char2, len(char2), len(char2[0])
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 26 1
확연히 알 수 있는 개별 캐릭터 추가 단계가 걸리는 됩니다 선반가공 char1 '에' [ui_policytable_java_spe_policy 이트레이블] [1].
이 경우, 문자의 a& # 39, & # 39 [e0100042.log] [2] # 39, & # 39 통해 z&. 및/또는 A& # 39, & # 39. # 39, & # 39, Z& 통해 쉽게 할 수 있는 문자 번호를 전날에약혼자에게 반품하십시오 [목록 번역] [3]:
>>> [ord(x)%32 for x in char2]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
유형에 대한 데이터 구조를 확인할 수 있으며, 첫 구체화하십시오 액세스하려면 합니다.
>>> [ord(x)%32 for x in char1[0]]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
만일 자신의 코드에 문제가 될 수 있는 것과 같은 질문에 열거합니다.
합리적 대안 입니다. ' [ord (스트로베르 ()) 에서 x 의 96 char1 [0]]'
해당 볼 수 있습니다 '문자를 = [& # 39, a& # 39, & # 39, & # 39, c& # 39 b& # 39;;).]' 쉼표 없이 모든 문자를 입력하면 바로 동일합니까 문자열으로 바뀌엇어요 ' [& # 39, abc.& # 39,] 의 이 같은'.
이제 종료기:
>>> import string
>>> [ord(x.lower())-96 for x in string.letters]
[1,2,...26, 1,2,3...26] # my ellipses
>>> char3=[string.letters] # one string as element[0]
>>> [ord(x)%32 for x in char3[0]]
>>> [ord(x)%32 for x in [string.letters][0]]
[1]: http://docs.python.org/glossary.html # 이트레이블 용어 [2]: http://docs.python.org/glossary.html # e0100042.log 용어 [3]: http://docs.python.org/glossary.html # 번역 용어 목록
이것은 내가 이러한 목적으로 사용되는 기능을 사용할 수 있습니다. 대문자, 소문자 모두 효과적입니다.
def convert_char(old):
if len(old) != 1:
return 0
new = ord(old)
if 65 <= new <= 90:
# Upper case letter
return new - 64
elif 97 <= new <= 122:
# Lower case letter
return new - 96
# Unrecognized character
return 0
같은 일이 [이] [1]
[str(ord(c)&31) for c in text]
[1]: # 4319417 https://stackoverflow.com/questions/4319392/python-code-for-calculating-number-of-an-alphabet/4319417
>>> [str(ord(string.lower(c)) - ord('a') + 1) for c in string.letters]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24', '25', '26', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
'25', '26']
def letter_to_number(letters):
letters = letters.lower()
dictionary = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26}
strlen = len(letters)
if strlen == 1:
number = dictionary[letters]
elif strlen == 2:
first_letter = letters[0]
first_number = dictionary[first_letter]
second_letter = letters[1]
second_number = dictionary[second_letter]
number = (first_number * 26) + second_number
elif strlen == 3:
first_letter = letters[0]
first_number = dictionary[first_letter]
second_letter = letters[1]
second_number = dictionary[second_letter]
third_letter = letters[2]
third_number = dictionary[third_letter]
number = (first_number * 26 * 26) + (second_number * 26) + third_number
return number
이 기능을 사용하여. It 는 알파벳의 문자열으로 avamer 자리 값을 있다.
def convAlph2Num(sent):
alphArray = list(string.ascii_lowercase)
alphSet = set(alphArray)
sentArray = list(sent.lower())
x = []
for u in sentArray:
if u in alphSet:
u = alphArray.index(u) + 1
x.append(u)
print(x)
return
목표는 경우 해당 문자를 사용하여, 꼭 이래야겠어요 압cd.1리스 변형하려면 압cd.1리스 및 기능:
from string import letters
def rank(x, d = dict((letr,n%26+1) for n,letr in enumerate(letters[0:52]))):
return d[x]
왜냐하면 내 [0 52tb] 제가 태어나해본일중에 기록되었으므로 파이썬 2.7 버전 값을 표시합니다.
& # # # # ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz*ƒŠOEŽšoežŸ 192 & # 195, 196, 193, & # 197, & # 194, & # & # 198 199, & # & #, 200, 201, 202, &, & # & # # # # 204 203kb, & # 208v 207,,,, & # 205 206 & # 210, 211, 209, & # & # # # 213, 214, 212, & # 216, & # &, & # 218, & # 219, & # 220gb, & # 217, & # & # 223, 222, & # 224, & # & 221, & # # # 228, & # 227, 225, & # 226, & # & # 232, & # 229, & # 233, 230, &, & # 231, & # 236, & # 237, 235, 234 비트& & # # # # 241,,, 238 & # 242, & # & 239tb 비트& 240tb & # # # # 244, 243, & # 249, 248, 246 245, &, & # 250, & # & & # 252, & # 253, 251, & # 254, & # & 비트& 255w.
스트라이트레터스 대한 인수.
그나저나, 낮은 () 함수의 다시 사용하지 않는 각 있다. 건설 기간 동안 대우를 받고 쇱そ 경우 기본 문자 이름이다.
.
예를 들어 있습니다.
word = 'supercalifragilisticexpialidocious'
print ''.join( letter if rank(letter)%3!=0 else '.' for letter in word)
결과:.
s.페.a.ag. 스트리아스피아d스
.
너무 맵 () 와 함께 사용할 수 있습니다.
print map(rank,'ImmunoElectroPhoresis')
결과:.
[9, 13, 13, 21, 14, 15, 5, 12, 5, 3, 20, 18, 15, 16, 8, 15, 18, 19, 5, 9, 19]
그냥 문자, 숫자 경우 보았으매 매핑하려면 어졌다면 그냥 뭔가 단순 다음과 같습니다.
def letter_to_index(letter):
_alphabet = 'abcdefghijklmnopqrstuvwxyz'
return next((i for i, _letter in enumerate(_alphabet) if _letter == letter), None)
물론 추가하기만 할꺼이나 하려면 시작 후 1 (i + 1 의 i. 상술합니다.
A = B = 1, 2 등 반대 하는 경우 등), 다음 코드를 사용할 수 있습니다. 난 이미 유념하십시오 최대 2 만 개 수준으로 변환할지 갖고 있는 클래스 A, B, C 상술합니다.
loopvariable = 0
numberofdivisions = 53
while (loopvariable <numberofdivisions):
if(loopvariable<26):
print(chr(65+loopvariable))
loopvariable +=1
if(loopvariable > 26 and loopvariable <53):
print(chr(65)+chr(65+(loopvariable-27)))
Here is my solution for 문제가 있는 그 모든 문자로 변환할 문자열을 다시 그 영어 알파벳 문자로 포지셔닝하십시오 문자열으로 nos.
https://gist.github.com/bondnotanymore/e0f1dcaacfb782348e74fac8b224769e
이를 상세히 파악할 수 있도록 스케쳐내 알려주세요. 다음 개념을 사용한