hwang.me 发表于 2020-5-22 21:51:39

这个里边 while true 有点不能理解

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

'''
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=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()

qiuyouzhi 发表于 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
我觉得小甲鱼的本意是认为这样会让你们更好理解(更贴近英语)

青出于蓝 发表于 2020-5-22 22:49:58

while True 就是如果条件为真

hwang.me 发表于 2020-5-23 00:16:27

qiuyouzhi 发表于 2020-5-22 14:02
1,会呀,目的就是要改变上面的prompt
2,是的
3,这个是小甲鱼课上讲过的啊,我觉得你没有认真学,但你 ...

谢谢好像能理解了

我赌晨晨学不会 发表于 2020-5-23 00:43:06

{:10_257:}

许美丽学编程 发表于 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呢?感觉这样要更复杂一些

许美丽学编程 发表于 2020-6-15 13:48:56

许美丽学编程 发表于 2020-6-15 13:42
我有个疑问:
while True:
      chosen = False


是不是因为下面已经有了break,所以如果前面这里用了break会导致整个while true循环结束?
页: [1]
查看完整版本: 这个里边 while true 有点不能理解