2012-10-23 99 views
1

這裏學習Python:我只是試圖切換字符串中的字符。例如:'A'到'C'。字符串只是沒有做任何事情。這是我到目前爲止:Python字符串操作問題

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

回答

1

請記住,字符串是不可變的,所以你需要重新分配你的原始字符串。您可以嘗試的東西沿着這些路線:

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

這將是一個更Python化方法:

dummy = ''.join(chr(ord(c) + 5) for c in dummy) 
print(dummy) 
+0

謝謝你,我用C++所以Python似乎有點... :)不同 –

+0

@AlexanderGardner沒錯高興能幫上忙:-)是的python提供*很多* C++等語言無法使用的實用程序,因此需要時間才能習慣。無論如何,不​​要忘記接受答案! – arshajii

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]) 
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。

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...