1

ここで Python を学ぶ: 文字列内の文字を切り替えようとしているだけです。例: 「A」から「C」。文字列は何もしていません。これが私がこれまでに持っているものです:

import string
dummy = "beans"
for i in xrange(len(dummy)):
    chr(ord(dummy[i])+5)
print(dummy)
4

4 に答える 4

1

文字列は不変であるため、元の文字列を再割り当てする必要があることに注意してください。次の行に沿って何かを試すことができます。

dummy = "beans"
newdummy = ""
for i in xrange(len(dummy)):
    newdummy += chr(ord(dummy[i])+5)
dummy = newdummy
print(dummy)

これは、よりPythonicなアプローチになります。

dummy = ''.join(chr(ord(c) + 5) for c in dummy)
print(dummy)
于 2012-10-23T02:50:29.313 に答える
1

string.maketrans は、ここでよりエレガントになるはずです:

import string

src = string.ascii_letters
dst = string.ascii_letters[5:] + string.ascii_letters[:5]
trans = string.maketrans(src, dst)
new_dummy = dummy.translate(trans)

詳しくはstring.maketransのドキュメントを参照してください。

于 2012-10-23T02:55:32.640 に答える
0

Python の文字列は不変です。これは、それらを変更できないことを意味するため、代わりに変数を新しい文字列に再割り当てする必要があります。

次に例を示します。

import string
dummy = "beans"
for i in xrange(len(dummy)):
    dummy = dummy[:i] + chr(ord(dummy[i])+5) + dummy[i+1:]
print(dummy)

またはより短い方法:

dummy = "beans"
dummy = "".join([chr(ord(c)+5) for c in dummy])
于 2012-10-23T02:51:20.563 に答える
0

これを行うには、次のようにします。

mystring="hello"
newstring=""
for x in range(len(mystring)):
    newstring+=chr(ord(mystring[x])+5)

ただし、これを行って ASCII 値が最大 251 になると、5 を追加するとエラーが発生するので、次のような if ステートメントで使用している値を確認する必要があります。

if ord(character)+value<255:
    ##your ok
else:
    ##uh oh...
于 2012-10-23T03:08:59.000 に答える