鱼C论坛

 找回密码
 立即注册
查看: 1415|回复: 6

[已解决]这个里边 while true 有点不能理解

[复制链接]
发表于 2020-5-22 21:51:39 | 显示全部楼层 |阅读模式

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

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

x
这个是小甲鱼 字典的题。 我不能理解的地方都被我标记出来了 求大佬用最简单的语言让小萌新秒懂, 爱你们

'''
this is a practice which is used to establish a sample login system

from fishc forum
'''

user_data = {}

def new_user():
    prompt =  'please enter your username: '
    while True:
        name = input(prompt)
        if name in user_data:
            # 这里的prompt不会影响上边的prompt 吗?
            prompt = 'This username has been used, please use another one:'
            continue
        else:
            break

    passwd = input('please enter the password:')
    user_data[name]=passwd
    print('register successfully! try to login now!!!!')

def old_user():
    prompt = 'please enter your username:'
    while True:
        name = input(prompt)
        if name not in user_data:
            prompt = 'the username you input is not existed, please enter the username again:'
            continue
        else:
            break

    passwd = input('please enter the password:')
    pwd = user_data.get(name) # 返回指定键的值?
    if passwd == pwd:
        print('well come to the homepage of the application, you can quit the application by click x')
    else:
        print('you entered a wrong password!')

def showmenu():
    #这种三个点点的中间的也是字符串吗?? 是不是三个点点中间的是可以任意换行,
    # 就像我们平时写东西一样, 回车代表换行?
    prompt = '''
|---creat a new account:N/n---|
|---login your account: E/e---|
|---quit the application please: Q/q---|
|---please enter the option---|'''

    while True:
        chosen = False  #这里为什么chosen 要定义为False啊?
        while not chosen: #如果上面定义了是false, 那么这里就应该是说true的时候循环啊
            choice =  input(prompt)
            if choice not in 'NnEeQq':
                print('you entered a wrong option, please try again:')
            else:
                chosen = True #这里chosen判断真假的作用是什么呢??为什么要判断真假?
                #如果上边的我理解对了 这里不就是true 跳不出循环么??? 求解释。 脑壳昏

            if choice == 'q' or choice == 'Q':
                break
            if choice == 'n' or choice == 'N':
                new_user()
            if choice == 'e' or choice == 'E':
                old_user()

showmenu()
最佳答案
2020-5-22 22:02:07
1,会呀,目的就是要改变上面的prompt
2,是的
3,这个是小甲鱼课上讲过的啊,我觉得你没有认真学,但你的理解是对的
4,你可以按照英语来理解,如果没有选择,就一直循环(条件是选择在N,E,Q这三个字母之中)
你说的恰恰相反,要是为True了,就是while not True,也就是 while False,自然会退出循环。
而while not False就是while True。
要是真的不能理解,可以这样:
while True:
    choice =  input(prompt)
    if choice not in 'NnEeQq':
        print('you entered a wrong option, please try again:')
    else:
        break
我觉得小甲鱼的本意是认为这样会让你们更好理解(更贴近英语)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-22 22:02:07 | 显示全部楼层    本楼为最佳答案   
1,会呀,目的就是要改变上面的prompt
2,是的
3,这个是小甲鱼课上讲过的啊,我觉得你没有认真学,但你的理解是对的
4,你可以按照英语来理解,如果没有选择,就一直循环(条件是选择在N,E,Q这三个字母之中)
你说的恰恰相反,要是为True了,就是while not True,也就是 while False,自然会退出循环。
而while not False就是while True。
要是真的不能理解,可以这样:
while True:
    choice =  input(prompt)
    if choice not in 'NnEeQq':
        print('you entered a wrong option, please try again:')
    else:
        break
我觉得小甲鱼的本意是认为这样会让你们更好理解(更贴近英语)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 22:49:58 | 显示全部楼层
while True 就是如果条件为真
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 00:16:27 | 显示全部楼层
qiuyouzhi 发表于 2020-5-22 14:02
1,会呀,目的就是要改变上面的prompt
2,是的
3,这个是小甲鱼课上讲过的啊,我觉得你没有认真学,但你 ...

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

使用道具 举报

发表于 2020-5-23 00:43:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-15 13:42:00 | 显示全部楼层
我有个疑问:
while True:
        chosen = False  
        while not chosen:
            choice =  input(prompt)
            if choice not in 'NnEeQq':
                print('you entered a wrong option, please try again:')
            else:
                chosen = True
这里为什么不用continue和break在执行while True循环的继续和结束,而用chosen的true和false呢?感觉这样要更复杂一些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-15 13:48:56 | 显示全部楼层
许美丽学编程 发表于 2020-6-15 13:42
我有个疑问:
while True:
        chosen = False  

是不是因为下面已经有了break,所以如果前面这里用了break会导致整个while true循环结束?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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