鱼C论坛

 找回密码
 立即注册
查看: 2624|回复: 7

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

[复制链接]
发表于 2021-1-2 15:46:57 | 显示全部楼层 |阅读模式

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

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

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

    mima = input("请输入密码:")
    dict[name] = 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()

跪求大佬 指正
最佳答案
2021-1-2 16:45:58
  1. user = {}       # 变量名应该避开 Python 保留字、函数名

  2. def new():
  3.     print()
  4.     print('【创建用户】')
  5.     while True:
  6.         name = input("请输入要注册的用户名:") . strip()
  7.         if name and name in user . keys():
  8.             print("用户名已经存在,请重新输入:")
  9.         else:
  10.             break
  11.     if name :
  12.         user[name] = input("请输入密码:") . strip()
  13.         print("注册成功!!")

  14. def old():
  15.     if user :
  16.         print()
  17.         print('【用户登录】')
  18.         while True:
  19.             t = input("请输入用户名:") . strip()
  20.             if t and t not in user . keys():
  21.                 print("没有找到给此用户['%s']!" % t)
  22.             else:
  23.                 break
  24.         if t:
  25.             if user[t] == input("请输入密码:") . strip():
  26.                 print("登录成功")
  27.             else:
  28.                 print("*** 抱歉,密码错误!")
  29.     else:
  30.         print('\n*** 抱歉,当前用户列表为空!\n')
  31.       
  32. def show():
  33.     m = ''' 请选择需要执行的命令
  34.             新建用户:A/a
  35.             登录请输入:B/b
  36.             退出程序:C/c
  37.             请输入命令:'''
  38.     while True:
  39.         print()
  40.         i = input(m) . strip()
  41.         if i not in 'AaBbCc':
  42.             print("您输入的命令有问题,请重新输入:")
  43.         elif i == 'C' or i == 'c':
  44.             break
  45.         elif i == 'A' or i == 'a':
  46.             new()
  47.         else :
  48.             old()
  49.    
  50. show()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 16:32:31 | 显示全部楼层
  1. dict = {}
  2. def new():
  3.     x = "请输入要注册的用户名:"
  4.     while True:
  5.         name = input(x)
  6.         if name in dict:
  7.             print("用户名存在请重新输入:")
  8.             continue
  9.         else:
  10.             break

  11.     mima = input("请输入密码:")
  12.     dict[name] = mima
  13.     print("注册成功!!")


  14. def old():
  15.     y = "请输入用户名:"
  16.     while True:
  17.         t = input(y)
  18.         if t not in dict():
  19.             print("没有找到给用户名!")
  20.             continue
  21.         else:
  22.             break
  23.             
  24.     h = input("请输入密码:")
  25.     if h == dict.get(y):
  26.         print("登录成功")
  27.     else:
  28.         print("密码错误!")

  29. def show():
  30.     m = ''' 请选择需要执行的命令
  31.             新建用户:A/a
  32.             登录请输入:B/b
  33.             退出程序:C/c
  34.             请输入命令:'''
  35.     while True:
  36.         i = input(m)
  37.         if i not in 'AaBbCc':
  38.             print("您输入的命令有问题,请重新输入:")
  39.             continue
  40.         if i =='C' or i=='c':  #if 判断条件需要改
  41.             break
  42.         #下面这一段缩进后移一格就好了
  43.         if i =='A' or i== 'a':
  44.             new()
  45.         if i =='B' or i== 'b':
  46.             old()
  47.    

  48. show()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 16:36:59 | 显示全部楼层
本帖最后由 昨非 于 2021-1-2 16:40 编辑


(修改在44行以后)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 16:45:58 | 显示全部楼层    本楼为最佳答案   
  1. user = {}       # 变量名应该避开 Python 保留字、函数名

  2. def new():
  3.     print()
  4.     print('【创建用户】')
  5.     while True:
  6.         name = input("请输入要注册的用户名:") . strip()
  7.         if name and name in user . keys():
  8.             print("用户名已经存在,请重新输入:")
  9.         else:
  10.             break
  11.     if name :
  12.         user[name] = input("请输入密码:") . strip()
  13.         print("注册成功!!")

  14. def old():
  15.     if user :
  16.         print()
  17.         print('【用户登录】')
  18.         while True:
  19.             t = input("请输入用户名:") . strip()
  20.             if t and t not in user . keys():
  21.                 print("没有找到给此用户['%s']!" % t)
  22.             else:
  23.                 break
  24.         if t:
  25.             if user[t] == input("请输入密码:") . strip():
  26.                 print("登录成功")
  27.             else:
  28.                 print("*** 抱歉,密码错误!")
  29.     else:
  30.         print('\n*** 抱歉,当前用户列表为空!\n')
  31.       
  32. def show():
  33.     m = ''' 请选择需要执行的命令
  34.             新建用户:A/a
  35.             登录请输入:B/b
  36.             退出程序:C/c
  37.             请输入命令:'''
  38.     while True:
  39.         print()
  40.         i = input(m) . strip()
  41.         if i not in 'AaBbCc':
  42.             print("您输入的命令有问题,请重新输入:")
  43.         elif i == 'C' or i == 'c':
  44.             break
  45.         elif i == 'A' or i == 'a':
  46.             new()
  47.         else :
  48.             old()
  49.    
  50. show()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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'  ...

这不是优先级问题吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 16:52:19 | 显示全部楼层
昨非 发表于 2021-1-2 16:47
这不是优先级问题吗

不是优先级而是逻辑根本错误  if 'a' : 和  if True : 是划等号的也就是他所有的判断全部满足if条件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 23:30:49 | 显示全部楼层
楼主记得及时结帖设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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