优化这段代码def f(i): a = input() b = input() if b == '123456' and a == 'admin' or a == 'administrator': print("登录成功") else: print("登录失败") if i < 3: f(i) if __name__ == '__main__': i = 0 f(i)
时间: 2023-06-09 16:03:33 浏览: 154
好的,我明白了,您的第一个问题是优化这段代码。
这段代码可以被优化为以下形式:
def f(i):
username = input("请输入用户名:")
password = input("请输入密码:")
if username in ['admin', 'administrator'] and password == '123456':
print("登录成功")
else:
i += 1
print("登录失败")
if i < 3:
f(i)
else:
print("登录次数超限")
if __name__ == '__main__':
f(0)
优化后的代码有以下改进:
1. 在获取输入时,使用一个提示消息,提示用户输入用户名和密码。
2. 将用户名的判断从两个 if 语句改为使用一个包含合法用户名的列表,使代码更加简洁。
3. 将错误登录次数 i 作为参数传入函数中,避免使用了全局变量。
优化后的代码更加易读和易维护。
相关问题
约瑟夫环问题username = ''password = ''count = 0 # 记录输入密码的次数while count < 3: username = input("请输入用户名:") password = input("请输入密码:") count += 1 if (username == "admin" or username == "administrator") and password == "012345": print("登录成功") break else: print("登录失败,请重新输入") if count == 3: print("您已连续3次输入错误,程序退出")
抱歉,您的问题似乎没有和之前的代码有关。以下是约瑟夫环问题的 Python 代码实现。
```python
def josephus(n, m):
if n == 1:
return 0
else:
return (josephus(n-1, m) + m) % n
n = 10 # 总人数
m = 3 # 数到第几个人出圈
index = josephus(n, m) # 计算最后一个出圈的人的下标
print("最后一个出圈的人的下标为:", index)
```
这段代码实现了约瑟夫环问题。假设有 n 个人围成一圈,从第一个人开始数,数到第 m 个人出圈,然后从下一个人开始重新数,再数到第 m 个人出圈,以此类推,直到剩下最后一个人。最后一个出圈的人的下标即为答案。
在代码中,`josephus(n, m)` 函数递归地计算出最后一个出圈的人的下标。当只剩下一个人时,返回 0;否则,根据递推公式 `(josephus(n-1, m) + m) % n` 计算下一个出圈的人的下标。最后,将计算出的下标打印输出。
解释以下代码:#类名:Admin #属性: #行为:行为:管理员界面,管理员验证 class Admin(object): admin = '1' # 设置账户为1 passwd = '1' # 设置密码为1 # 管理员界面 def Adminview(self): print("****************************************************") print("* *") print("* 欢迎登录银行 *") print("* *") print("****************************************************") def Check(self): inputAdmin = input("请输入管理员账户: ") if self.admin != inputAdmin: print("账号输入错误!") return -1 inputPasswd = input("请输入管理员密码: ") if self.passwd != inputPasswd: print("密码输入错误!") return -1 print("操作成功") return 0 admin = Admin() admin.Adminview() # 检测管理员 if admin.Check(): return -1
这段代码定义了一个名为 Admin 的类,该类包含了两个属性 admin 和 passwd,以及两个方法 Adminview 和 Check。Adminview 方法用于打印出管理员登录的欢迎界面,而 Check 方法则用于验证管理员的账户和密码是否正确。如果验证失败,则会返回 -1,否则返回 0。最后,代码创建了一个 Admin 的对象 admin,并调用了其 Adminview 方法以展示管理员登录界面,然后调用了 Check 方法来验证管理员账户和密码是否正确,如果验证失败则会直接返回 -1。
阅读全文