typeerror:并非在字符串格式化过程中转换所有参数

时间:2015-02-21 15:59:11

标签: python tkinter typeerror

我已经用ceasar的方法编写了这个用于加密消息的程序,但是这个错误存在一个主要问题。它应该将字符串b更改为c并且c必须加密。然而,在tkinter.i中没有显示任何关于此错误的类似问题,但似乎没有任何与此案件有任何联系。有人帮忙吗??这里是代码。

def encrypt(event):
global top,c,root,e
a=e.get()
b=l.get()
top.destroy()
c=''
mystring=StringVar()
mystring.set(c)
for i in b:
    if ord(i)in range(65,91) or ord(i) in range(97,123):
        if ((ord(i)+a%26)>90 and ord(i)<=90) or (ord(i)+a%26)>122:
            c=c+chr(ord(i)+a%26-26)
        else:
            c=c+chr(ord(i)+a%26)
    else:
        c=c+i
mystring.set(c)
Label(root,textvariable=mystring,bg='blue',fg='white',font=("Helvetica", 30)).pack()
root.update()

1 个答案:

答案 0 :(得分:1)

e.get() 可能正在返回一个字符串。您已设置a = e.get,之后,您执行a % 26%是int的模数,但是字符串的字符串格式。如果a不是用于格式化的正确字符串(例如"There were %s cows!"),则会抛出TypeError。通过使用IDLE的标准调试器或打印打印来测试每个变量的值以进行测试。