鱼C论坛

 找回密码
 立即注册
查看: 1876|回复: 10

[已解决]十分紧急!求这个代码错误在哪

[复制链接]
发表于 2020-6-16 08:51:25 | 显示全部楼层 |阅读模式

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

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

x
代码如下,十分感激

def main():
  flag = open("flag.txt")
  word = flag.read()
  if word == "0":
    print("首次启动!")
    flag.close()
    file = open("flag.txt", "w")  # 覆盖写模式,以重写的方式打开文件flag
    file.write("1")        # 将“1”写入falg文件中
    file.close()
    global admi
    admi={"root":"1234"}
    global user
    user={}
    print_login_menu()       
    user_select()       
  elif word == "1":
    print("欢迎回来!")
    print_login_menu()
    user_select()
  else:
    print("初始化参数错误!")

# 打印菜单
def print_login_menu():
  print("----用户选择----")
  print("1-管理员登录")
  print("2-普通用户登录")
  print("----------------")

# 用户选择
def user_select():
  while True:
    user_type_select = input("请选择用户类型:")
    if user_type_select == "1":               
      root_login()
      break
    elif user_type_select == "2":                     
      while True:
        select = input("是否需要注册?(y/n):")
        if select == "y" or select == "Y":
          user_register()
          user_login()
          break
        elif select == "n" or select == "N":
          user_login()
          break
        else:
          print("输入有误,请重新选择")
    else:
      print("输入有误,请重新选择")
  
      
# 管理员登录
def root_login():
  global admi
  while True:
    print()
    print("----管理员登陆----")
    admi_id = input("请输管理员名称:")
    admi_pwd = input("请输入密码:")
    if (admi_id,admi_pwd) in list(admi.items()):
      print("管理员登录成功!")
      break
    else:
      print("管理员登录失败,请重新登录。")
      
# 用户注册
def user_register():
  print()
  print("----用户注册----")
  user_id = input("请输入账户名:")
  user_pwd = input("请输入密码:")
  global user
  user[user_id]= user_pwd
                                                 
# 用户登录
def user_login():
  while True:
    print()
    print("----用户登录----")
    user_id = input("请输入账户名:")
    user_pwd = input("请输入密码:")
    global user
    pwd=user.get(user_id,0)
    if pwd==0:
      print("查无此人!")
    elif pwd==user_pwd:
      print("登录成功!")                               
      break                               
    else:                               
      print("密码不正确,请重新登录。")


admi={}
user={}
main()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 08:54:37 | 显示全部楼层



急的话吧出现的问题或者报错内容一起发上来呀,这样才能更快的解决你的 问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-16 08:58:28 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-16 09:04 编辑



开始时候直接判断文本内容应该是否为空,判断是否为0不怎么合理吧,毕竟是首次打开,而且你如果为 0 那么就一直参数错误了

再者说你应该判断第一个字符是不是 1 而不是 整个文本 是否为 1 用索引 [0] 即可

  1. def main():
  2.     flag = open("flag.txt")
  3.     word = flag.read()
  4.     if word == "":
  5.         print("首次启动!")
  6.         flag.close()
  7.         file = open("flag.txt", "w")  # 覆盖写模式,以重写的方式打开文件flag
  8.         file.write("1")  # 将“1”写入falg文件中
  9.         file.close()
  10.         global admi
  11.         admi = {"root": "1234"}
  12.         global user
  13.         user = {}
  14.         print_login_menu()
  15.         user_select()
  16.     elif word[0] == "1":
  17.         print("欢迎回来!")
  18.         print_login_menu()
  19.         user_select()
  20.     else:
  21.         print("初始化参数错误!")


  22. # 打印菜单
  23. def print_login_menu():
  24.     print("----用户选择----")
  25.     print("1-管理员登录")
  26.     print("2-普通用户登录")
  27.     print("----------------")


  28. # 用户选择
  29. def user_select():
  30.     while True:
  31.         user_type_select = input("请选择用户类型:")
  32.         if user_type_select == "1":
  33.             root_login()
  34.             break
  35.         elif user_type_select == "2":
  36.             while True:
  37.                 select = input("是否需要注册?(y/n):")
  38.                 if select == "y" or select == "Y":
  39.                     user_register()
  40.                     user_login()
  41.                     break
  42.                 elif select == "n" or select == "N":
  43.                     user_login()
  44.                     break
  45.                 else:
  46.                     print("输入有误,请重新选择")
  47.         else:
  48.             print("输入有误,请重新选择")


  49. # 管理员登录
  50. def root_login():
  51.     global admi
  52.     while True:
  53.         print()
  54.         print("----管理员登陆----")
  55.         admi_id = input("请输管理员名称:")
  56.         admi_pwd = input("请输入密码:")
  57.         if (admi_id, admi_pwd) in list(admi.items()):
  58.             print("管理员登录成功!")
  59.             break
  60.         else:
  61.             print("管理员登录失败,请重新登录。")


  62. # 用户注册
  63. def user_register():
  64.     print()
  65.     print("----用户注册----")
  66.     user_id = input("请输入账户名:")
  67.     user_pwd = input("请输入密码:")
  68.     global user
  69.     user[user_id] = user_pwd


  70. # 用户登录
  71. def user_login():
  72.     while True:
  73.         print()
  74.         print("----用户登录----")
  75.         user_id = input("请输入账户名:")
  76.         user_pwd = input("请输入密码:")
  77.         global user
  78.         pwd = user.get(user_id, 0)
  79.         if pwd == 0:
  80.             print("查无此人!")
  81.         elif pwd == user_pwd:
  82.             print("登录成功!")
  83.             break
  84.         else:
  85.             print("密码不正确,请重新登录。")


  86. admi = {}
  87. user = {}
  88. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 09:05:26 | 显示全部楼层
本帖最后由 热气球 于 2020-6-16 09:06 编辑

word = flag.read()
word的长度是包含一个换行符的,所以其长度是2
"0"或者"1"的长度是1,其不包含换行符,所以二者比对的时候是不会相等的
建议转成int比较
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 09:09:48 | 显示全部楼层
Twilight6 发表于 2020-6-16 08:58
开始时候直接判断文本内容应该是否为空,判断是否为0不怎么合理吧,毕竟是首次打开,而且你如果为 0 那 ...

请问可以具体说一下哪个第几行吗 我是个纯新手 十分抱歉打扰
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 09:11:17 | 显示全部楼层
热气球 发表于 2020-6-16 09:05
word = flag.read()
word的长度是包含一个换行符的,所以其长度是2
"0"或者"1"的长度是1,其不包含换行符, ...

麻烦可以具体说哪一行如何改吗 我是个纯新手 十分抱歉再次打扰
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 09:13:22 | 显示全部楼层
夏想秃秃头 发表于 2020-6-16 09:11
麻烦可以具体说哪一行如何改吗 我是个纯新手 十分抱歉再次打扰

def main():
    flag = open("flag.txt")
    word  = flag.read()
    if word == "0\n" or  word == "0":
        print("首次启动!")
        flag.close()
        file = open("flag.txt", "w")  # 覆盖写模式,以重写的方式打开文件flag
        file.write("1")  # 将“1”写入falg文件中
        file.close()
        global admi
        admi = {"root": "1234"}
        global user
        user = {}
        print_login_menu()
        user_select()
    elif word == "1\n" or word == "1":
        print("欢迎回来!")
        print_login_menu()
        user_select()
    else:
        print("初始化参数错误!")


# 打印菜单
def print_login_menu():
    print("----用户选择----")
    print("1-管理员登录")
    print("2-普通用户登录")
    print("----------------")


# 用户选择
def user_select():
    while True:
        user_type_select = input("请选择用户类型:")
        if user_type_select == "1":
            root_login()
            break
        elif user_type_select == "2":
            while True:
                select = input("是否需要注册?(y/n):")
                if select == "y" or select == "Y":
                    user_register()
                    user_login()
                    break
                elif select == "n" or select == "N":
                    user_login()
                    break
                else:
                    print("输入有误,请重新选择")
        else:
            print("输入有误,请重新选择")


# 管理员登录
def root_login():
    global admi
    while True:
        print()
        print("----管理员登陆----")
        admi_id = input("请输管理员名称:")
        admi_pwd = input("请输入密码:")
        if (admi_id, admi_pwd) in list(admi.items()):
            print("管理员登录成功!")
            break
        else:
            print("管理员登录失败,请重新登录。")


# 用户注册
def user_register():
    print()
    print("----用户注册----")
    user_id = input("请输入账户名:")
    user_pwd = input("请输入密码:")
    global user
    user[user_id] = user_pwd


# 用户登录
def user_login():
    while True:
        print()
        print("----用户登录----")
        user_id = input("请输入账户名:")
        user_pwd = input("请输入密码:")
        global user
        pwd = user.get(user_id, 0)
        if pwd == 0:
            print("查无此人!")
        elif pwd == user_pwd:
            print("登录成功!")
            break
        else:
            print("密码不正确,请重新登录。")


admi = {}
user = {}
main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 09:14:39 | 显示全部楼层
夏想秃秃头 发表于 2020-6-16 09:09
请问可以具体说一下哪个第几行吗 我是个纯新手 十分抱歉打扰


第四行:
  1. if word == "0"
复制代码

改成:
  1. if word == ""
复制代码


第十六行:
  1. elif word == "1"
复制代码

改成:
  1. elif word[0] == "1"
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 09:17:18 | 显示全部楼层
热气球 发表于 2020-6-16 09:13
def main():
    flag = open("flag.txt")
    word  = flag.read()

十分感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 09:18:32 | 显示全部楼层    本楼为最佳答案   

采纳下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 09:18:55 | 显示全部楼层

十分感谢!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 20:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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