鱼C论坛

 找回密码
 立即注册
查看: 2133|回复: 2

[已解决]关于第26课课后习题

[复制链接]
发表于 2020-4-20 07:14:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Saint_HUFS 于 2020-4-20 07:56 编辑
  1. dict={}
  2. def N():
  3.     while 1:
  4.         user=input('请输入用户名n:')
  5.         if user  in dict:
  6.             print('此用户名已经被使用,请重新输入:')
  7.             continue
  8.         else:
  9.             break

  10.     pw = input('请输入密码:')
  11.     dict[user] = pw
  12.     print('注册成功,赶紧试试登录吧!')

  13. def E():
  14.     while 1:
  15.         user = input('请输入用户名e:')
  16.         if user not in dict:
  17.             print('您输入的用户名不存在,请重新输入:',end="")
  18.             continue
  19.         else:
  20.             while 0:
  21.                 pw=input('请输入密码:')
  22.                 if pw==dict.get(user):
  23.                     print('欢迎进入XXOO系统,请点击右上角的x结束程序')
  24.                     break
  25.                 else:
  26.                     print('您输入的密码错误,请重新输入。',end="")
  27. while 1:
  28.     print('新建用户:N/n')
  29.     print('登录账号: E/e')
  30.     print('退出程序:Q/q')
  31.     code = input('请输入指令代码m:')
  32.     if code == 'N' or 'n':
  33.         N()
  34.         continue
  35.     if code == 'E' or 'e':
  36.         E()
  37.         continue
  38.     if code == 'Q' or 'q':
  39.         break
复制代码


请问 为什么已经写了
if code == 'N' or 'n':
        N()
        continue
    if code == 'E' or 'e':
        E()
        continue
    if code == 'Q' or 'q':
        break
[/code]

但是  每次运行之后  即使输入E或者 e 也还是从开头 N()开始运行,if 条件句根本没有用一样,只是按顺序运行,麻烦大神解答一下,谢谢
(为了区别,特地用input(‘请输入用户名n ’) 和  input('请输入用户名e')来区分 N( )函数 新用户注册  和   E() 函数老用户登录
最佳答案
2020-4-20 07:25:14
本帖最后由 txxcat 于 2020-4-20 07:29 编辑

if code == 'N' or 'n':,你的表达式错了,这个是code与'N'比对后的结果再和'n'比对,当code是'N'以外的情况下,是False or 'n',结果是'n',非空字符,相当于if True,当然就运行N()了。
  1. >>> code='n'
  2. >>> code == 'N' or 'n'
  3. 'n'
  4. >>> code='N'
  5. >>> code == 'N' or 'n'
  6. True
  7. >>> code='e'
  8. >>> code == 'N' or 'n'
  9. 'n'
复制代码

应该改成:if code == 'N' or code == 'n',这样才能返回你需要的值,后面的都要这样改。不过我喜欢另一种写法:if code.strip().lower() == 'n',我感觉这样严谨简洁一些,尤其是碰到长字符串比对,如'exit'、'quit'这一类的时候。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-20 07:25:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 txxcat 于 2020-4-20 07:29 编辑

if code == 'N' or 'n':,你的表达式错了,这个是code与'N'比对后的结果再和'n'比对,当code是'N'以外的情况下,是False or 'n',结果是'n',非空字符,相当于if True,当然就运行N()了。
  1. >>> code='n'
  2. >>> code == 'N' or 'n'
  3. 'n'
  4. >>> code='N'
  5. >>> code == 'N' or 'n'
  6. True
  7. >>> code='e'
  8. >>> code == 'N' or 'n'
  9. 'n'
复制代码

应该改成:if code == 'N' or code == 'n',这样才能返回你需要的值,后面的都要这样改。不过我喜欢另一种写法:if code.strip().lower() == 'n',我感觉这样严谨简洁一些,尤其是碰到长字符串比对,如'exit'、'quit'这一类的时候。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 07:47:49 | 显示全部楼层
txxcat 发表于 2020-4-20 07:25
if code == 'N' or 'n':,你的表达式错了,这个是code与'N'比对后的结果再和'n'比对,当code是'N'以外的情 ...

啊 懂了,谢谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 13:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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