Python小白鸭2 发表于 2021-10-25 20:13:54

26讲的练习题

user_data = {}

def new_user():
    prompt = '请输入用户名:'
    while 1:
      name = input(prompt)
      if name in user_data:
            prompt('此用户名已被使用,请重新输入:')
            continue
      else:
            break
    password = input('请设置登录密码:')
    user_data= password
    print('注册成功,赶紧登录试试吧')

def old_user():
    i = 3
    prompt = '请输入需登录的用户名:'
    while 1:
      name = input(prompt)
      if name not in user_data:
            prompt = '该用户名未注册,请重新输入正确的用户名:'
            continue
      else:
            break
    password = input('请输入登录密码')
    while password != user_data.get(name):
      if i>0:
            i-=1
            password = input('密码输入错误,您还有'+i+'次机会,请重新输入:')
            continue
      else:
            print('输入次数已用完,账号暂时冻结')
            break
    while password == user_data.get(name):
      print('登录成功')
      break

print('|--- 新建用户:N/n ---|')
print('|--- 登录账号:E/e ---|')
print('|--- 退出程序:N/n ---|')
prompt = '请输入指令代码:'

while 1:
    order = input(prompt)
    if order not in 'NnEeQq':
      prompt = '请输入正确的代码指令:'
      continue
    else:
      if order in 'Nn':
            new_user()
      elif order in 'Ee':
            old_user()
      else:
            print('程序已退出')
            break

以上是我的代码 但运行的过程中,如果指令代码顺序是:先n再e再n 然后第二次新建用户的时候如果是已有的用户名就会发生报错
以下是报错

|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:N/n ---|
请输入指令代码:n
请输入用户名cjh
请设置登录密码:123
注册成功,赶紧登录试试吧
请输入指令代码:e
请输入需登录的用户名:cjh
请输入登录密码123
登录成功
请输入指令代码:n
请输入用户名cjh
Traceback (most recent call last):
File "E:/学习资料/python实例/课后练习26.1.py", line 51, in <module>
    new_user()
File "E:/学习资料/python实例/课后练习26.1.py", line 8, in new_user
    prompt('此用户名已被使用,请重新输入:')
TypeError: 'str' object is not callable
>>>
不太明白我哪里出错了 希望有同学能帮我指出一下 谢谢 ,鱼C的代码我能看懂 但就是想问一下 我这样写的错误在哪里

suchocolate 发表于 2021-10-25 20:15:58

第8行,这是啥:    prompt('此用户名已被使用,请重新输入:')

深谙流年 发表于 2021-10-25 20:23:52

suchocolate 发表于 2021-10-25 20:15
第8行,这是啥:    prompt('此用户名已被使用,请重新输入:')

估计用的pycharm然后本来想打print,结果pycharm弹出prompt了,hhhhh

Python小白鸭2 发表于 2021-10-27 19:15:54

深谙流年 发表于 2021-10-25 20:23
估计用的pycharm然后本来想打print,结果pycharm弹出prompt了,hhhhh

这个只是重新定义一下prompt ,重新赋一下值,避免写name = input('此用户名已被使用,请重新输入:'),这样相对简洁一点
页: [1]
查看完整版本: 26讲的练习题