zcy1187949797 发表于 2021-11-9 21:47:04

while下if语句为啥不执行呀。。。

萌新想请教各位大神,为什么这里的if语句不执行。。。{:5_96:}



while True:
    print('新建用户 : N / n')
    print('登录账号 : E / e')
    print('退出程序 : Q / q')
    a = input('请输入一个代码')
    if a == 'N' or 'n':
      dict1 = {}
      b = input('请输入用户名')
      if b not in dict1:
            c = input('请输入密码')
            dict1 = c
            print('注册成功!赶紧试试登录吧!')
      else:
            b = input('用户名已存在,请重新输入')
            c = input('请输入密码')
            dict1 = c
            print('注册成功!赶紧试试登录吧!')
    if a == 'E' or 'e':
      b = input('请输入已注册用户名')      
      
      if b not in dict1:         
            b = input('用户名不存在请重新输入')
            continue
      else:
            c = input('请输入密码')
      while c != dict1:
            c = input('密码错误,请重新输入')
      print('欢迎登录系统')
    if a == 'q' or 'Q':
      print('正在退出。。。')
      break

jackz007 发表于 2021-11-9 21:53:50

       代码中所有这样的语句
if a == 'N' or 'n':
       要这样改:
if a == 'N' or a == 'n':
       也可以这样改
if a in 'Nn':

suchocolate 发表于 2021-11-9 21:54:12

本帖最后由 suchocolate 于 2021-11-9 21:55 编辑

1)应该是这样: if a == 'N' or a == 'n',或简化一下这样最方便:if a in 'Nn':
2)多个同条件if可以用elif。
3)dict1字典应该放到if之前,其中元素赋值和取元素方式不对。应该是这样:dict1 = c

zcy1187949797 发表于 2021-11-9 22:11:05

jackz007 发表于 2021-11-9 21:53
代码中所有这样的语句

       要这样改:


萌新想请教一下,为什么 if a == 'N' or 'n':不行呀

zcy1187949797 发表于 2021-11-9 22:11:36

suchocolate 发表于 2021-11-9 21:54
1)应该是这样: if a == 'N' or a == 'n',或简化一下这样最方便:if a in 'Nn':
2)多个同条件if可以用e ...

萌新想请教一下,为什么 if a == 'N' or 'n':不行呀

suchocolate 发表于 2021-11-9 22:17:02

if a == 'N' or 'n'可以理解为这样 if (a == 'N') or ('n'),成了并列关系,如果a不是N,就执行or后面的,or后面的是字符串n,不为0,所以if成立,也就是说if永久为真,if失去了效果。

zcy1187949797 发表于 2021-11-9 22:43:36

suchocolate 发表于 2021-11-9 22:17
if a == 'N' or 'n'可以理解为这样 if (a == 'N') or ('n'),成了并列关系,如果a不是N,就执行or后面的 ...

好的好的,谢谢大佬
页: [1]
查看完整版本: while下if语句为啥不执行呀。。。