文字型を持っている C言語であれば、以下のような書き方になると思います。
for (char c = 'A'; c <= 'Z'; c++) {
printf("%c", c); // => A B C ... Z
}
Pythonでも同様の書き方は可能です。
for i in range(ord('A'), ord('Z') + 1):
print(chr(i)) # => A B C ... Z
しかし、Python は文字型を持たない故、Python らしくない書き方です。より Pythonic な方法は無いものでしょうか?
これを解決するのが string モジュールです。
string モジュールには、よく使われると思われる制御文字列が定義されています。
'ABC...Z' の文字列も定義されています。
import string
print(string.ascii_uppercase)
# => ABCDEFGHIJKLMNOPQRSTUVWXYZ
for i in string.ascii_uppercase:
print(i) # => A B C ... Z
string には他にも以下の固定文字列が定義されています。なかなか気の利くモジュールですね。
>>> import string
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.whitespace
' \t\n\r\x0b\x0c'
0 件のコメント:
コメントを投稿