python get_len,python – 使用len和get()函数给出错误的统计信息?

我有一些代码要求用户输入26个字符来制作自己的加密代码,如果长度为26个字符且不是字母或预设的encryption_code,则代码会将encryption_code更改为他们输入的内容.

import tkinter

from tkinter import *

from tkinter import ttk

from tkinter.ttk import *

encryption_code = 'LFWOAYUISVKMNXPBDCRJTQEGHZ'

window = tkinter.Tk()

window.title("Encryption/Decryption")

change_frame = tkinter.Frame(window)

changed_frame = tkinter.Frame(window)

encrypt_entry = tkinter.Entry(change_frame)

def code_change():

global changed_frame

global encrypt_entry

print(len(encrypt_entry.get()))

if encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':

encrypt_entry.delete(0, tkinter.END)

changed_incorrect.configure(background=window.cget('bg'))

changed_incorrect.config(text="Please enter a different code", foreground='red')

changed_incorrect.pack()

changed_frame.pack()

if len(encrypt_entry.get()) == 26:

encryption_code = encrypt_entry.get()

encrypt_entry.delete(0, tkinter.END)

changed_label.configure(background=window.cget('bg'))

changed_label.config(text="You have successfully changed the encryption code!")

change_header.config(text=str(encryption_code))

changed_incorrect.pack_forget()

changed_label.pack()

changed_frame.pack()

elif len(encrypt_entry.get()) < 26 or len(encrypt_entry.get()) > 26:

changed_incorrect.configure(background=window.cget('bg'))

changed_incorrect.config(text="Please enter only 26 characters", foreground='red')

changed_label.pack_forget()

changed_incorrect.pack()

changed_frame.pack()

change_label = tkinter.Label(change_frame, text="Please enter your own encryption code in block capitals", font=('Helvetica', 12))

change_header = tkinter.Label(change_frame, text="Make sure it is all 26 letters and do not repeat a letter to prevent errors", font=('Helvetica', 12))

change_confirm = ttk.Button(change_frame, text="Confirm", width=20, command=code_change)

changed_label = tkinter.Label(changed_frame, text="You have successfully changed the encryption code!", font=('Helvetica', 14))

changed_incorrect = tkinter.Label(changed_frame, text="Please enter your code again", font=('Helvetica', 14))

change_label.pack()

change_header.pack()

encrypt_entry.pack()

change_confirm.pack()

change_frame.pack()

window.mainloop()

我的问题是每当我尝试输入26个字符时,例如QWERTYUIOPASDFGHJKLZXCVBNM,它告诉我当它显然是26个字符时我没有输入26个字符,并且如果用户没有输入26个字符,则该消息仅用于弹出.

更新:使用print(len(encrypt_entry.get()))向我显示我的条目是26,但我的代码是说它不是26个字符.

解决方法:

问题出现在第一个if语句中 –

if encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':

这始终是True,因为布尔表达式的分组使得它 –

if (encrypt_entry.get() == 'LFWOAYUISVKMNXPBDCRJTQEGHZ') or ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):

并且所有非空字符串在布尔上下文中都是True.这会导致程序删除条目中的任何内容,因此您将从第二个if条件中获取错误.你可以改为 –

encryptgetted = encrypt_entry.get()

if encryptgetted == 'LFWOAYUISVKMNXPBDCRJTQEGHZ' or encryptgetted == 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':

来源:https://www.icode9.com/content-1-423001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值