鱼C论坛

 找回密码
 立即注册
查看: 896|回复: 14

[已解决]哥哥们,我又来了,出错了,小甲鱼26节课后练习

[复制链接]
发表于 2018-8-18 14:11:18 | 显示全部楼层 |阅读模式

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

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

x
想问两个问题:
1.运行过程中出现的问题:
问题描述:手打小甲鱼用户登录模式,出现了无法进入下一步的情况:
代码如下:
user_data={}
def new_user():
    prompt="请输入用户名:"
    while True:
        name=input(prompt)
        if name in user_data:
            prompt = "此用户名已经被使用,请重新输入:"
            continue
        else:
            break
    password = input("请输入密码:")
    use_data[name] = password
    print("注册成功,赶紧试试登录吧")

def old_user():
    prompt=input("请输入用户名:")
    while True:
        name=input(prompt)
        if name not in user_data:
            prompt="您输入的用户名不存在,请重新输入"
            continue
        else:
            break
    password=input("请输入密码:")
    pwd=user_data.get(name)
    if password==pwd:
        print("欢迎进入XXOO系统!")
    else:
        print("密码错误!")

def showmenu():
    prompt='''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:'''
    while True:
        chosen=False
        while not chosen:
            choice=input(prompt)
            if choice not in "NnEeQq":
                print("您输入的指令代码错误,请重新输入:")
            else:
                chosen=True

        if choice=="q" and choice=="Q":
            break
        if choice=="n" and choice=="N":
            new_user()
        if choice=="e" and choice=="E":
            old_user()
showmenu()
出现问题如下,一直重复,运行不下去啊
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:Q

|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:E

|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:N



2.小甲鱼最开始令user_data={},这是个字典,字典可以直接name not in user_data吗?我都是name not in list(user_date.keys())
            
最佳答案
2018-8-18 14:30:54
1.
  1. if choice=="q" and choice=="Q":
复制代码

这句及下面的两句判断的and应改成or

2.
可以呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-18 14:24:15 | 显示全部楼层
塔利班哥哥呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 14:28:39 | 显示全部楼层
       if choice=="q" and choice=="Q":
            break
        if choice=="n" and choice=="N":
            new_user()
        if choice=="e" and choice=="E":
            old_user()
逻辑用或,我就不信你输入大小写都满足了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 14:30:54 | 显示全部楼层    本楼为最佳答案   
1.
  1. if choice=="q" and choice=="Q":
复制代码

这句及下面的两句判断的and应改成or

2.
可以呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-18 14:33:29 | 显示全部楼层
塔利班 发表于 2018-8-18 14:28
if choice=="q" and choice=="Q":
            break
        if choice=="n" and choice=="N":

有犯低级错误了,谢谢塔利班哥哥。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-18 14:34:24 | 显示全部楼层
dong628 发表于 2018-8-18 14:30
1.

这句及下面的两句判断的and应改成or

谢谢,十分感谢,说的很详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 14:36:39 | 显示全部楼层
user_data={}
def new_user():
    prompt="请输入用户名:"
    while True:
        name=input(prompt)
        if name in user_data:
            prompt = "此用户名已经被使用,请重新输入:"
            continue
        else:
            break
    password = input("请输入密码:")
    use_data[name] = password
    print("注册成功,赶紧试试登录吧")

def old_user():
    prompt=input("请输入用户名:")
    while True:
        name=input(prompt)
        if name not in user_data:
            prompt="您输入的用户名不存在,请重新输入"
            continue
        else:
            break
    password=input("请输入密码:")
    pwd=user_data.get(name)
    if password==pwd:
        print("欢迎进入XXOO系统!")
    else:
        print("密码错误!")

def showmenu():
    prompt='''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:'''
    while True:
##        chosen=False
##        while not chosen:
        choice=input(prompt)
        if choice not in "NnEeQq":
            print("您输入的指令代码错误,请重新输入:")
        else:
##            chosen=True                          #chosen 的作用??好像没有必要

            if choice=="q" or choice=="Q":    #缩进来,被 else 保护
                break
            if choice=="n" or choice=="N":
                new_user()
            if choice=="e" or choice=="E":
                old_user()

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

使用道具 举报

 楼主| 发表于 2018-8-19 10:59:16 | 显示全部楼层
claws0n 发表于 2018-8-18 14:36
user_data={}
def new_user():
    prompt="请输入用户名:"

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

使用道具 举报

 楼主| 发表于 2018-8-19 11:00:56 | 显示全部楼层
claws0n 发表于 2018-8-18 14:36
user_data={}
def new_user():
    prompt="请输入用户名:"

出错后,一直在检查出错中的模块,没有检查后面的执行,哎,太嫩了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-19 11:14:29 | 显示全部楼层
Chysial 发表于 2018-8-19 11:00
出错后,一直在检查出错中的模块,没有检查后面的执行,哎,太嫩了

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

使用道具 举报

 楼主| 发表于 2018-8-19 11:25:19 | 显示全部楼层

我说我太嫩了的意思是我是新手,不成熟,检查不细致的意思,检查前边,你是不是想多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-19 11:36:44 | 显示全部楼层
Chysial 发表于 2018-8-19 11:25
我说我太嫩了的意思是我是新手,不成熟,检查不细致的意思,检查前边,你是不是想多。


我确实还很嫩,发太慢了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-19 11:43:32 | 显示全部楼层
claws0n 发表于 2018-8-19 11:36
我确实还很嫩,发太慢了~

再问一个问题,当我在写模块时,如果输入错了,想恢复上一步操作,有啥快捷键啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-19 11:46:31 | 显示全部楼层
Chysial 发表于 2018-8-19 11:43
再问一个问题,当我在写模块时,如果输入错了,想恢复上一步操作,有啥快捷键啊

ctrl + z 很一般的快捷呀~
如果是程序执行时输入错了就重新执行, F5
程序进入死循环, ctrl + c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-19 11:59:19 | 显示全部楼层
claws0n 发表于 2018-8-19 11:46
ctrl + z 很一般的快捷呀~
如果是程序执行时输入错了就重新执行, F5
程序进入死循环, ctrl + c

Soga,谢谢了,刚开始学习,不清楚,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 23:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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