在这里学习Python:我只是尝试在字符串中切换字符。示例:'A'到'C'。字符串只是没有做任何事情。以下是我到目前为止的情况:
import string
dummy = "beans"
for i in xrange(len(dummy)):
chr(ord(dummy[i])+5)
print(dummy)
答案 0 :(得分: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)
答案 1 :(得分: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的文档。
答案 2 :(得分: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])
答案 3 :(得分: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...