鱼C论坛

 找回密码
 立即注册
查看: 2219|回复: 1

关于程序改进

[复制链接]
发表于 2019-11-1 08:39:23 | 显示全部楼层 |阅读模式

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

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

x
m=()
name=()
code=()
name1=()
code1=()
def sign():
    global m
    global name
    global name1
    global code
    global code1
    print('|---新建用户:N/n---|')
    print('|---登录账号:E/e---|')
    print('|---退出程序:Q/q---|')
    m=input('请输入指令代码:')
    while ('Q' not in m)and('q' not in m):
        if ('N' in m)or('n'  in m):
            name=input('请输入用户名:')
            code=input('请输入密码:')
            print('注册成功啦,来试试登录吧!')
            sign()
        elif ('E' in m)or('e' in m):
            name1=input('请输入用户名:')
            code1=input('请输入密码:')
            while code!=code1:
               
                print('密码输入错误!')
                code1=input('请重新输入密码:')
            print("欢迎进入系统")
            print("输入Q或q结束运行")
            sign()

    print('欢迎使用本程序!')

sign()


这段程序输入Q时为什么会打印三次 欢迎使用本程序!??
而且感觉我这段程序太啰嗦了,有木有大佬指点一下如何优化
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-11-1 15:32:48 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-1 15:33 编辑

      因为你的 sign() 在新建帐户和登录系统的时候都会被递归调用一次,而每退出一次就会打印一次 "欢迎使用本程序!",而且,你的操作越多,打印的次数就会越多,并不只限于三次。

      楼主可以试试我修改的代码,基本可以接近实用:
  1. #-*- coding:gbk -*-
  2. count = {}
  3. while True:
  4.     prompt = '''
  5.         |---新建用户:N/n---|
  6.         |---登录账号:E/e---|
  7.         |---退出程序:Q/q---|
  8.           请输入指令代码 : '''
  9.     m = input(prompt) . strip()
  10.     if len(m):
  11.         if m[0] in 'NnEeQq':
  12.             if m[0] == 'N' or m[0] == 'n':
  13.                 print('\n\t **** 新建用户 ****\n')
  14.                 while True:
  15.                     name = input('请输入用户名: ') . strip()
  16.                     if len(name) :
  17.                         if name in count . keys():
  18.                             print('用户: %s 已经存在' % name)
  19.                             continue
  20.                         pas = input('请输入密码:') . strip()
  21.                         count[name] = pas
  22.                         print('用户: %s 创建成功' % name)
  23.                         break
  24.                     else:
  25.                         break
  26.             elif m[0] == 'E' or m[0] == 'e':
  27.                 print('\n\t **** 登陆系统 ****\n')
  28.                 f = False
  29.                 while not f:
  30.                     name = input('请输入用户名: ') . strip()
  31.                     if len(name):
  32.                         if name in count . keys():
  33.                             while not f:
  34.                                 pas = input('请输入密码:') . strip()
  35.                                 if count[name] == pas:
  36.                                     print('欢迎登录系统!!!')
  37.                                     f = True
  38.                                 else:
  39.                                     print('密码错误')
  40.                         else:
  41.                             print('用户: %s 不存在' % name)
  42.                     else:
  43.                         break
  44.             else:
  45.                 break
  46.     else:
  47.         break

  48. print('欢迎使用本系统')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-20 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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