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 回答