pretty22 发表于 2021-1-2 15:46:57

这是个课后题 能运行 但是无法达到老师那样的程度 而且还会在运行的时候出错

dict = {}
def new():
    x = "请输入要注册的用户名:"
    while True:
      name = input(x)
      if name in dict:
            print("用户名存在请重新输入:")
            continue
      else:
            break

    mima = input("请输入密码:")
    dict = mima
    print("注册成功!!")


def old():
    y = "请输入用户名:"
    while True:
      t = input(y)
      if t not in dict():
            print("没有找到给用户名!")
            continue
      else:
            break
            
    h = input("请输入密码:")
    if h == dict.get(y):
      print("登录成功")
    else:
      print("密码错误!")

def show():
    m = ''' 请选择需要执行的命令
            新建用户:A/a
            登录请输入:B/b
            退出程序:C/c
            请输入命令:'''
    while True:
      i = input(m)
      if i not in 'AaBbCc':
            print("您输入的命令有问题,请重新输入:")
            continue
      if i =='C' or 'c':
            break
      

    if i =='A' or 'a':
      new()
    if i =='B' or 'b':
      old()
   

show()

跪求大佬 指正
{:10_266:}

昨非 发表于 2021-1-2 16:32:31

dict = {}
def new():
    x = "请输入要注册的用户名:"
    while True:
      name = input(x)
      if name in dict:
            print("用户名存在请重新输入:")
            continue
      else:
            break

    mima = input("请输入密码:")
    dict = mima
    print("注册成功!!")


def old():
    y = "请输入用户名:"
    while True:
      t = input(y)
      if t not in dict():
            print("没有找到给用户名!")
            continue
      else:
            break
            
    h = input("请输入密码:")
    if h == dict.get(y):
      print("登录成功")
    else:
      print("密码错误!")

def show():
    m = ''' 请选择需要执行的命令
            新建用户:A/a
            登录请输入:B/b
            退出程序:C/c
            请输入命令:'''
    while True:
      i = input(m)
      if i not in 'AaBbCc':
            print("您输入的命令有问题,请重新输入:")
            continue
      if i =='C' or i=='c':#if 判断条件需要改
            break
      #下面这一段缩进后移一格就好了
      if i =='A' or i== 'a':
            new()
      if i =='B' or i== 'b':
            old()
   

show()

昨非 发表于 2021-1-2 16:36:59

本帖最后由 昨非 于 2021-1-2 16:40 编辑


(修改在44行以后)

qq1151985918 发表于 2021-1-2 16:41:41

昨非 发表于 2021-1-2 16:36
i == 'A' or 'a'这样的写法是不对的
==优先级高于or的

if i =='A' or 'a':并不是因为==优先级的问题而是因为
if i =='A' or 'a':==>其实相当于 if i =='A'   和 if 'a',也就是说这样的条件结果永远都是True

jackz007 发表于 2021-1-2 16:45:58

user = {}       # 变量名应该避开 Python 保留字、函数名

def new():
    print()
    print('【创建用户】')
    while True:
      name = input("请输入要注册的用户名:") . strip()
      if name and name in user . keys():
            print("用户名已经存在,请重新输入:")
      else:
            break
    if name :
      user = input("请输入密码:") . strip()
      print("注册成功!!")

def old():
    if user :
      print()
      print('【用户登录】')
      while True:
            t = input("请输入用户名:") . strip()
            if t and t not in user . keys():
                print("没有找到给此用户['%s']!" % t)
            else:
                break
      if t:
            if user == input("请输入密码:") . strip():
                print("登录成功")
            else:
                print("*** 抱歉,密码错误!")
    else:
      print('\n*** 抱歉,当前用户列表为空!\n')
      
def show():
    m = ''' 请选择需要执行的命令
            新建用户:A/a
            登录请输入:B/b
            退出程序:C/c
            请输入命令:'''
    while True:
      print()
      i = input(m) . strip()
      if i not in 'AaBbCc':
            print("您输入的命令有问题,请重新输入:")
      elif i == 'C' or i == 'c':
            break
      elif i == 'A' or i == 'a':
            new()
      else :
            old()
   
show()

昨非 发表于 2021-1-2 16:47:48

qq1151985918 发表于 2021-1-2 16:41
if i =='A' or 'a':并不是因为==优先级的问题而是因为
if i =='A' or 'a':==>其实相当于 if i =='A'...

这不是优先级问题吗{:10_245:}

qq1151985918 发表于 2021-1-2 16:52:19

昨非 发表于 2021-1-2 16:47
这不是优先级问题吗

不是优先级而是逻辑根本错误if 'a' : 和if True : 是划等号的也就是他所有的判断全部满足if条件

昨非 发表于 2021-1-5 23:30:49

楼主记得及时结帖设置最佳答案
页: [1]
查看完整版本: 这是个课后题 能运行 但是无法达到老师那样的程度 而且还会在运行的时候出错