鱼C论坛

 找回密码
 立即注册
查看: 1684|回复: 5

[已解决]第026讲:字典:当索引不好用时2 | 课后测试题及答案的问题

[复制链接]
发表于 2020-3-3 21:14:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xiangyuebj 于 2020-3-4 12:28 编辑
  1. user_data = {}

  2. def new_user():
  3.     while True:
  4.         name = input('请输入用户名:')
  5.         if name in user_data:
  6.             print('此用户名已经被使用,请重新输入:')
  7.             continue
  8.         else:
  9.             passwd = input('请输入密码:')
  10.             user_data[name] = passwd
  11.             print('注册成功,赶紧试试登录吧^_^')
  12.             print(user_data)

  13. def old_user():
  14.     while True:
  15.         name = input('请输入用户名:')
  16.         if name not in user_data:
  17.             print('此用户名不存在,请重新输入:')
  18.             continue
  19.         else:
  20.             break
  21.     passwd = input('请输入密码:')
  22.     pwd = user_data.get(name)

  23.     if pwd == passwd:

  24.         print('欢迎进入XXOO系统,请点右上角的X结束程序!')
  25.     else:
  26.         print('密码错误!')

  27. def ShowMenu():
  28.     prompt = '''
  29. |--- 新建用户:N/n ---|
  30. |--- 登录账号:E/e ---|
  31. |--- 推出程序:Q/q ---|
  32. |--- 请输入指令代码:'''
  33.     print(prompt)
  34.         chosen = False
  35.         while not chosen:
  36.             choice = input(prompt)
  37.             if choice not in 'NnEeQq':
  38.                 print('您输入的指令代码错误,请重新输入:')
  39.             else:
  40.                 chosen = True

  41.     if choice == 'q' or choice == 'Q':
  42.         break
  43.     if choice == 'n' or choice == 'N':
  44.         new_user()
  45.     if choice == 'e' or choice == 'E':
  46.         old_user()


  47. ShowMenu()
复制代码


最后课后作业,我自己照着答案按照自己的想法思路修改过得代码  有些问题请教论坛鱼友

第一个问题:

  1.         chosen = False
  2.         while not chosen:
  3.             choice = input(prompt)
  4.             if choice not in 'NnEeQq':
  5.                 print('您输入的指令代码错误,请重新输入:')
  6.             else:
  7.                 chosen = True
复制代码


这段代码中chosen  是什么意思 没理解为什么要用chosen


第二个问题:

  1.     if choice == 'q' or choice == 'Q':
  2.         break
  3.     if choice == 'n' or choice == 'N':
  4.         new_user()
  5.     if choice == 'e' or choice == 'E':
  6.         old_user()
复制代码


这段代码中 报错:SyntaxError: 'break' outside loop

百度查了有的说 IF 不能和break使用  
最佳答案
2020-3-4 11:48:56
本帖最后由 wuqramy 于 2020-3-4 11:51 编辑

问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:
  1. user_data = {}

  2. def new_user():
  3.     while True:
  4.         name = input('请输入用户名:')
  5.         if name in user_data:
  6.             print('此用户名已经被使用,请重新输入:')
  7.             continue
  8.         else:
  9.             passwd = input('请输入密码:')
  10.             user_data[name] = passwd
  11.             print('注册成功,赶紧试试登录吧^_^')
  12.             print(user_data)

  13. def old_user():
  14.     while True:
  15.         name = input('请输入用户名:')
  16.         if name not in user_data:
  17.             print('此用户名不存在,请重新输入:')
  18.             continue
  19.         else:
  20.             break
  21.     passwd = input('请输入密码:')
  22.     pwd = user_data.get(name)

  23.     if pwd == passwd:

  24.         print('欢迎进入XXOO系统,请点右上角的X结束程序!')
  25.     else:
  26.         print('密码错误!')

  27. def ShowMenu():
  28.     prompt = '''
  29. |--- 新建用户:N/n ---|
  30. |--- 登录账号:E/e ---|
  31. |--- 推出程序:Q/q ---|
  32. |--- 请输入指令代码:'''
  33.     print(prompt)
  34.         chosen = False
  35.         while not chosen:
  36.             choice = input(prompt)
  37.             if choice not in 'NnEeQq':
  38.                 print('您输入的指令代码错误,请重新输入:')
  39.             else:
  40.                 chosen = True
  41.             if choice == 'q' or choice == 'Q':
  42.                 break
  43.             if choice == 'n' or choice == 'N':
  44.                 new_user()
  45.             if choice == 'e' or choice == 'E':
  46.                 old_user()


  47. ShowMenu()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-4 10:09:00 From FishC Mobile | 显示全部楼层
其中chosen用来判断用户是不是输入的有效的命令,无效的时候就保持为False让你继续输入,当输入有效命令时就变为True,此时退出输入循环,去判断输入的内容如果是有效命令就执行对应的函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 11:35:14 | 显示全部楼层
小小小菜菜菜 发表于 2020-3-4 10:09
其中chosen用来判断用户是不是输入的有效的命令,无效的时候就保持为False让你继续输入,当输入有效命令时 ...

第二个问题 为什么不能用break命令退出循环 你能看出来问题吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 11:48:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wuqramy 于 2020-3-4 11:51 编辑

问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:
  1. user_data = {}

  2. def new_user():
  3.     while True:
  4.         name = input('请输入用户名:')
  5.         if name in user_data:
  6.             print('此用户名已经被使用,请重新输入:')
  7.             continue
  8.         else:
  9.             passwd = input('请输入密码:')
  10.             user_data[name] = passwd
  11.             print('注册成功,赶紧试试登录吧^_^')
  12.             print(user_data)

  13. def old_user():
  14.     while True:
  15.         name = input('请输入用户名:')
  16.         if name not in user_data:
  17.             print('此用户名不存在,请重新输入:')
  18.             continue
  19.         else:
  20.             break
  21.     passwd = input('请输入密码:')
  22.     pwd = user_data.get(name)

  23.     if pwd == passwd:

  24.         print('欢迎进入XXOO系统,请点右上角的X结束程序!')
  25.     else:
  26.         print('密码错误!')

  27. def ShowMenu():
  28.     prompt = '''
  29. |--- 新建用户:N/n ---|
  30. |--- 登录账号:E/e ---|
  31. |--- 推出程序:Q/q ---|
  32. |--- 请输入指令代码:'''
  33.     print(prompt)
  34.         chosen = False
  35.         while not chosen:
  36.             choice = input(prompt)
  37.             if choice not in 'NnEeQq':
  38.                 print('您输入的指令代码错误,请重新输入:')
  39.             else:
  40.                 chosen = True
  41.             if choice == 'q' or choice == 'Q':
  42.                 break
  43.             if choice == 'n' or choice == 'N':
  44.                 new_user()
  45.             if choice == 'e' or choice == 'E':
  46.                 old_user()


  47. ShowMenu()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 12:28:07 | 显示全部楼层
wuqramy 发表于 2020-3-4 11:48
问题一:chosen是一个用来停止循环的变量
问题二:break不在循环中,以下为修改代码,试试看:

明白了。。知道原因了 最后几行的代码跑到和while同一个缩进了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 12:29:18 | 显示全部楼层
xiangyuebj 发表于 2020-3-4 12:28
明白了。。知道原因了 最后几行的代码跑到和while同一个缩进了

以后可要仔细了^_^
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 01:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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