You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python登录程序运行方法及代码优化咨询

问题分析与解决方案

一、实例化失败的核心原因

你的代码存在两个关键拼写错误,直接导致实例化和运行失败:

  1. 类构造函数名称错误:__int__应为__init__,Python类的初始化方法必须严格命名为__init__,否则无法正确初始化实例属性。
  2. 登录方法名称拼写错误:loginProgrma应为loginProgram(拼写错误不影响实例化,但调用方法时会触发AttributeError)

二、修正后的可运行代码

import sys as s
import datetime


class LoginPage:

    def __init__(self, username, password):
        self.username = username
        self.password = password
        self.incorrectPass = 0

    def loginProgram(self):
        while True:
            # 用户名输入校验
            while True:
                nameInput = input("Enter your username: ➸ ")
                if nameInput != self.username:
                    print("    (Username is incorrect. Re-enter your username)")
                else:
                    print("    (Enter your password)")
                    break
            
            # 密码输入校验
            while True:
                passInput = input("Enter your password: ➳ ")
                if passInput != self.password:
                    self.incorrectPass += 1
                    print("    (Incorrect password. Re-enter your password)")
                    if self.incorrectPass == 3:
                        s.exit('\nYou have been locked!')
                else:
                    break
            
            login_time = datetime.datetime.now()
            print(f'You logged in at {login_time}')
            return f"\n    (Welcome back {nameInput}.)"

三、正确运行步骤

在代码末尾添加实例化和调用逻辑:

# 替换为你预设的用户名和密码
if __name__ == "__main__":
    login_page = LoginPage("my_user", "my_pass123")
    result = login_page.loginProgram()
    print(result)

运行脚本后,按照提示输入用户名和密码即可完成登录流程。

四、代码优化建议

1. 隐藏密码输入

使用getpass模块替代input(),避免密码明文显示:

import getpass
# 替换密码输入部分
passInput = getpass.getpass("Enter your password: ➳ ")

2. 简化嵌套结构

合并冗余循环,降低代码复杂度,同时重置密码错误次数(当用户重新输入正确用户名时):

def loginProgram(self):
    while True:
        nameInput = input("Enter your username: ➸ ").strip()
        if not nameInput:
            print("    (Username cannot be empty. Please enter again.)")
            continue
        if nameInput != self.username:
            print("    (Username is incorrect. Re-enter your username)")
            continue
        
        # 用户名正确时重置密码错误次数
        self.incorrectPass = 0
        print("    (Enter your password)")
        
        while self.incorrectPass < 3:
            passInput = getpass.getpass("Enter your password: ➳ ").strip()
            if not passInput:
                print("    (Password cannot be empty. Please enter again.)")
                continue
            if passInput == self.password:
                login_time = datetime.datetime.now()
                print(f'You logged in at {login_time}')
                return f"\n    (Welcome back {nameInput}.)"
            
            self.incorrectPass += 1
            remaining = 3 - self.incorrectPass
            print(f"    (Incorrect password. {remaining} attempts left.)")
        
        s.exit('\nYou have been locked!')

3. 优化提示信息可读性

统一提示风格,用更直观的符号区分状态:

print("❌ Username is incorrect. Please re-enter.")
print("✅ Username verified. Please enter your password.")
print(f"⚠️ Incorrect password. {remaining} attempts left.")

内容的提问来源于stack exchange,提问作者Huzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:35:23