鱼C论坛

 找回密码
 立即注册
查看: 1817|回复: 4

[已解决]Python26讲动动手问题

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

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

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

x
题目是:尝试编写一个用户登录程序
我写的代码是:
dic1 = {}
program = 1
def login():
    while program:
        print('''|---新建用户:N/n---|
|---登录账户:E/e---|
|---退出程序:Q/q---|
|---请输入程序代码:''', end = '')
        a = input()
        if a == N or a == n:
            temp = str(input('请输入用户名:'))
            while temp in dic1:
                print('此用户名已经被使用,请重新输入', end = '')
                temp = str(input())
            code = str(input('请输入密码:'))
            dict1[temp] = code
            print('注册成功,赶紧试试登录吧/n')
        if a == E or a == e:
            username = str(input('请输入用户名:'))
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = str(input())
            else:
                passcode = str(input('请输入密码:')
                while passcode != dic1.get(username):
                    print('密码错误,请重试:', end = '')
                    passcode = str(input())
                else:
                    print('欢迎进入系统,请点击右上角X结束程序!/n')
                    program = 0
        if a ==Q or a == q:
            program = 0
        else:
            print('指令错误,请重新输入:')

运行的时候一直提示标红的地方有错误,请问一下究竟是哪里出问题了?还有小章鱼这道题的代码为什么每次运行一个循环后就会空一行再继续运行下一次循环,是哪个代码实现了这个功能呢?
谢谢大家!
最佳答案
2021-1-2 21:06:22
本帖最后由 昨非 于 2021-1-2 21:14 编辑

好多小毛病,已经修改了
dic1 = {}
def login():
    program = 1
    while program:
        print('''|---新建用户:N/n---|
|---登录账户:E/e---|
|---退出程序:Q/q---|
|---请输入程序代码:''', end = '')
        a = input()
        if a not in ['N','n','E','e','Q','q']:   #把最后的else移到最上边来,避免多余的打印
            print('指令错误,请重新输入:')

        if a == 'N' or a == 'n':              #这里n要加引号,==前后都是字符串类型,必须相同,下面也一样
            temp = input('请输入用户名:')
            while temp in dic1:
                print('此用户名已经被使用,请重新输入', end = '')
                temp = input()
            code = input('请输入密码:')
            dic1[temp] = code                        #这儿有拼写错误
            print('注册成功,赶紧试试登录吧/n')
        if a == 'E' or a == 'e':
            username = input('请输入用户名:')
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = input()
            else:
                passcode = input('请输入密码:')
                while passcode != dic1.get(username):
                    print('密码错误,请重试:', end = '')
                    passcode = input()
                else:
                    print('欢迎进入系统,请点击右上角X结束程序!/n')
                    #program = 0    #如果加上这个的话,程序执行到登陆成功就会自动退出
        if a == 'Q' or a == 'q':
            program = 0

login()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-2 20:59:23 | 显示全部楼层
前一行(24行)的str()少了右侧括号
而且,input函数的返回值就是字符串,完全没必要加上str()
前面也没必要加上str()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-2 21:06:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2021-1-2 21:14 编辑

好多小毛病,已经修改了
dic1 = {}
def login():
    program = 1
    while program:
        print('''|---新建用户:N/n---|
|---登录账户:E/e---|
|---退出程序:Q/q---|
|---请输入程序代码:''', end = '')
        a = input()
        if a not in ['N','n','E','e','Q','q']:   #把最后的else移到最上边来,避免多余的打印
            print('指令错误,请重新输入:')

        if a == 'N' or a == 'n':              #这里n要加引号,==前后都是字符串类型,必须相同,下面也一样
            temp = input('请输入用户名:')
            while temp in dic1:
                print('此用户名已经被使用,请重新输入', end = '')
                temp = input()
            code = input('请输入密码:')
            dic1[temp] = code                        #这儿有拼写错误
            print('注册成功,赶紧试试登录吧/n')
        if a == 'E' or a == 'e':
            username = input('请输入用户名:')
            while username not in dic1:
                print('您输入的用户名不存在,请重新输入:', end = '')
                username = input()
            else:
                passcode = input('请输入密码:')
                while passcode != dic1.get(username):
                    print('密码错误,请重试:', end = '')
                    passcode = input()
                else:
                    print('欢迎进入系统,请点击右上角X结束程序!/n')
                    #program = 0    #如果加上这个的话,程序执行到登陆成功就会自动退出
        if a == 'Q' or a == 'q':
            program = 0

login()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 16:36:25 | 显示全部楼层
昨非 发表于 2021-1-2 21:06
好多小毛病,已经修改了

太谢谢你啦,新年快乐!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 16:36:51 | 显示全部楼层
是Pluto啊 发表于 2021-1-4 16:36
太谢谢你啦,新年快乐!

新年快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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