鱼C论坛

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

if 判断语句失灵了?

[复制链接]
发表于 2016-10-28 15:50:51 | 显示全部楼层 |阅读模式

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

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

x
  1. dict1 = dict()
  2. while True:
  3.     print('')
  4.     print('''| --- 新建用户:N/n --- |
  5. | --- 登录帐号:E/e ---|
  6. | --- 退出程序:Q/q ---|''')
  7.     code = input('| --- 请输入指令代码:')
  8.     print('code',code)
  9.     if code == 'N' or 'n':
  10.         username = input('请输入用户名:')
  11.         while True:
  12.             if username in dict1:
  13.                 username = input('此用户名已经被使用,请重新输入:')
  14.             else:break
  15.         password = input('请输入密码:')
  16.         dict1[username] = password
  17.         print('注册成功,赶紧试试登录吧^_^')
  18.         continue
  19.     elif code == 'E' or 'e':
  20.         username1 = input('请输入用户名:')
  21.         while True:
  22.             if username1 not in dict1:
  23.                 username1 = input('您输入的用户名不存在,请重新输入:')
  24.             else:break
  25.         password1 = input('请输入密码:')
  26.         if dict1[username1] == password1:
  27.             print('欢迎进入xxoo系统,请点击右上角的x结束程序!')
  28.             break
  29.         else:
  30.             print('您输入的用户名或密码有误。')
  31.             continue
  32.     elif code == 'Q' or 'q':
  33.         print('您已退出程序。')
  34.         break
  35.     else:
  36.         print('您输入的代码有误。')
  37.         continue   
复制代码


上面这一段代码理论上是只有code被赋值是N或n的时候才会调用第一个判断,可实际上无论输入什么都是调用第一个判断。

QQ图片20161028154510.png

然后我尝试把 or 'n' 去掉,第一个判断正常了,然后输入其他都会调用第二个判断。
请问大神判断语句里不能用or 来判断两个条件么?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-28 15:56:50 | 显示全部楼层
刚刚想明白了一个问题
逻辑应该是这样的 if (code == 'N') or 'n':
因为'n'恒真,所以一直调用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 16:00:58 | 显示全部楼层
把if code == 'n' or 'N':改为if code in ('N','n'):就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 18:43:43 | 显示全部楼层
if code.lower() == 'n'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 20:02:53 | 显示全部楼层
调皮博士 发表于 2016-10-28 16:00
把if code == 'n' or 'N':改为if code in ('N','n'):就好了

if code == 'n' or 'N':   这语句应该理解为if code == True,所以你输什么都执行。我是这么理解的~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-29 10:22:33 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-29 10:25:36 | 显示全部楼层
if code == 'n' or 'N':   这语句应该理解为== or 为同等级的运算符从左到右计算,注意加括号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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