Caser Cipher和.isalpha

时间:2015-12-02 18:54:20

标签: python user-interface tkinter

eingabe = Text(window, width=200, height=4)
eingabe.pack()


def c2n():
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    k = 3
    c = ''
    code = ''
    try:
        code = str(eingabe.get('1.0',END))
        code = code.lower()
        code = code.replace("\n","")
    except:
        label1.configure(text="Error!")
    finally:
        if code.isalpha():
            for z in code:
                if z == ' ':
                    c += z
                elif z in alphabet:
                    c += alphabet[(alphabet.index(z) + k) % (len(alphabet))]
            label1.configure(text=(str(c)))
        else:
            label1.configure(text="only letters please")

我最近开始使用Python,我的首要任务之一是使用Tkiner创建一个Caesar密码加密/解密器GUI。这只是我代码中的一个片段。

所以我想使用Text not Entry为我的用户提供更多空间来填充内容,但我意识到现在我的用户无法创建\n而无法点击文本字段中的下一个腐烂。问题是我检查代码.isalpha(),如果文本只包含字母,那就不再有用了。

现在我正在寻找一种新方法来检查字母或找到一种新方法来处理\n

对其余垃圾代码的任何积极的批评和反馈也会很好,但正如我所说,我最近开始使用Python而英语不是我的母语。

1 个答案:

答案 0 :(得分:0)

只需测试isspace

def crypt(text, k=3):
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    result = []
    for z in text.lower():
        if z.isspace():
            result.append(z)
        elif z in alphabet:
            result.append(alphabet[(alphabet.index(z) + k) % (len(alphabet))])
       else:
           raise AssertionError()
    return ''.join(result)


def c2n(text):
    try:
        label1.configure(text=crypt(eingabe.get('1.0',END)))
    except AssertionError:
        label1.configure(text="only letters please")