以下はどのように仕上げられるのでしょうか?
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: ')
いろんな解き方をしてみましたが、ピント来ませんでしたσ(^_^;)excuseしたいです。hello"と入力すると、アルファベットのように数字が並んで出力されます。例 a = 1 < in alphabet.
こんな感じでどうでしょう。
print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]
**エディット 説明しろと言われたので、説明します...といっても、すでにコメントで[?]
まずは、1行以上でやってみましょう。
input = raw_input('Write Text: ')
input = input.lower()
output = []
for character in input:
number = ord(character) - 96
output.append(number)
print output
これは同じことをしていますが、より読みやすくなっています。 私の最初の答えを理解しようとする前に、ここで起こっていることを理解できることを確認してください。 ここにあるものはすべて、ごく標準的な、シンプルなPythonです。 ordはordinalの略で、ほとんどの高級言語にはこの種の関数が用意されています。 この関数は、任意の文字の数値表現へのマッピングを提供します。 ordの逆関数はchrと呼ばれます。
chr(ord('x')) == 'x' # for any character, not just x.
自分で試してみると、aの序数は97です(上に掲載した3つ目のリンクは、完全なASCII文字セットを示しています)。各小文字は97〜122(26文字)の範囲にあります。したがって、任意の小文字の序数から96を引くだけで、 'a'== 1と仮定した場合のアルファベット内の位置が得られます。 つまり、 'b' == 98, 'c' == 99 などの序数が得られます。 96を引くと 'b' == 2, 'c' == 3 などとなります。
私が投稿した最初の解決策の残りの部分は、リスト内包と呼ばれるPythonのトリックを学ぶことができます。 しかし、私はそれよりも、あらゆる言語で問題を解決する方法を学ぶことに重点を置いていますが、そこでは ord があなたの友人です。 お役に立てれば幸いです。
これは、私がこの目的のために使っていた関数です。大文字でも小文字でも動作します。
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
>>> [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']