2017-02-28 69 views
1

大家好:)我正在构建一个脚本,用简单的文本旋转(ROT)编码文本。 该脚本运行良好,但我有一个问题,它也旋转所有符号像[空格,!,?,。]我正在与ascii表做它,我可以做什么以避免旋转该类型的字符?如何识别字符串中的非字母

def rot13(input,key): #Function to code a text with caeser chyper. 
    if key > 25: 
     key = 25 
    elif key < 2: 
     key = 2 
    finaltext = '' 
    for letter in input: 
     num = ord(letter) 
     if (num + key) > 122: #If the final number is greater than 122.. 
      x = (num + key) - 122 
      finaltext += chr(x + ord('a') - 1) 
     elif((num + key <= 122)): 
      finaltext += chr(num + key) 
    print(finaltext) 

回答

3

“旋转” 你的角色之前,添加一个检查,看看它是否是字母:

if letter.isalpha(): 
    # Do your thing 
else: 
    finaltext += letter 
+0

谢谢:)这工作好! – prossellob

1

试试这个:

>>> import string 
>>> letter = 'a' 
>>> letter in string.letters 
True 
>>> letter = '.' 
>>> letter in string.letters 
False 
相关问题