鱼C论坛

 找回密码
 立即注册
查看: 2305|回复: 4

[已解决]multpasswordbox密码访问出错

[复制链接]
发表于 2021-4-1 22:26:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import easygui as g
import string as s
import random

a = s.ascii_letters+s.digits
def getKey():  # 产生随机字符串
        key=random.sample(a,10)
        keys="".join(key)
        return keys

msg = '请输入账户和密码:'
title = '登录账号'
filed_name = ['用户名:','密码:']
while 1:
        password = ''
        temp = g.multpasswordbox(msg ,title,filed_name)
        if temp == None:
                break
        elif temp == '' or temp[0] != '' and temp[1] == '':
                g.msgbox('密码错误,请重新输入!')
        elif temp[0] == '52154615':
                password = '12345678'
                if temp[1] == password:
                        g.msgbox('密码正确!')
                        break
                else:
                        g.msgbox('密码错误,请重新输入!')
                print('用户名:%s' % temp[0])
                print(('密码提示:%s···' % password[:4]))
        elif temp[0] is not ['77444445','961182830','52154615']:
                password = getKey()  # 调用获取随机密码的函数
                count = 3
                while count > 0:
                        temp = g.multpasswordbox(msg, title, filed_name)
                        if temp[1] == password:  
                                g.msgbox('密码正确!')
                                break
                        else:
                                g.msgbox('密码错误,请重新输入!')
                        print('用户名:%s' % temp[0])
                        print(('密码提示:%s···' % password[:4]))
                        count -= 1

萌新求问时间:
TypeError: 'NoneType' object is not subscriptable
每次输入不是['77444445','961182830','52154615']这三个账号的时候,密码如果输错了,返回登录界面然后cancel 就会报错
最佳答案
2021-4-2 00:51:03
第40行(红色字体那行)没有判断第39行返回temp为None的情况(点取消返回None)。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-2 00:51:03 | 显示全部楼层    本楼为最佳答案   
第40行(红色字体那行)没有判断第39行返回temp为None的情况(点取消返回None)。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-2 01:16:36 | 显示全部楼层
hrp 发表于 2021-4-2 00:51
第40行(红色字体那行)没有判断第39行返回temp为None的情况(点取消返回None)。

我在39行和40行之间加了
if temp == None:
break

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-2 01:18:16 | 显示全部楼层
hrp 发表于 2021-4-2 00:51
第40行(红色字体那行)没有判断第39行返回temp为None的情况(点取消返回None)。

这样可以跳出小循环,但是不能跳出大循环,这样就需要2次cancel,有没有办法可以避免呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-2 01:38:03 | 显示全部楼层
hrp 发表于 2021-4-2 00:51
第40行(红色字体那行)没有判断第39行返回temp为None的情况(点取消返回None)。

解决了,在大循环最后一行加个 break 就好了,谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-25 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表