嘉伦放心飞 发表于 2020-3-23 10:01:03

name(number) is not defined?

print('--------请输入你的密码------------')
code = input('请输入密码:')
answer == '1234567'
i == 1
while True:
    if '*' in code:
      code = input("密码中不能含有“*”号")
      print ("你还有三次机会")
    else:
      if code != answer and i < 3:
            code = input("密码错误,你还有{}次机会".format("3 - i"))
            i += 1
      if code != answer and i > 3:
            print("密码输入错误,你已经没有机会重新输入了。")
            break
      else:
            print("密码输入正确,进入程序。")
            break
            

这个里面一旦运行就会出现"name ( answer ) is not defined",但是我明明就设定了answer= ‘’1234567‘’的呀,想请教一下为什么会这样子,如果大家知道的话可以告诉我一般这样xx is not defined是什么原因导致的吗?
另:我里面的in和not in 的运用是不是有些问题?

wp231957 发表于 2020-3-23 10:02:49

第④行是神马东东

wuqramy 发表于 2020-3-23 10:05:29

本帖最后由 wuqramy 于 2020-3-23 10:09 编辑

双等号(==)是用来判断等号两边是否相等的,赋值是用单等号(=)
代码还有隐藏的bug,正确代码如下:
print('--------请输入你的密码------------')
code = input('请输入密码:')
answer = '1234567'
i = 1
while True:
    if '*' in code:
      code = input("密码中不能含有“*”号")
      print ("你还有三次机会")
    else:
      if code != answer and i < 3:
            code = input("密码错误,你还有{}次机会".format(3 - i))
            i += 1
      if code != answer and i > 3:
            print("密码输入错误,你已经没有机会重新输入了。")
            break
      if code == answer:
            print("密码输入正确,进入程序。")
            break

一个账号 发表于 2020-3-23 10:06:23

第 4 行是 = 不是 ==

heidern0612 发表于 2020-3-23 10:21:29

单等号是赋值,双等号是比较。

上面理解了就好。

_荟桐_ 发表于 2020-3-23 10:39:08

=是赋值
==是等于
改成answer=‘1234’
i=1

蒋博文 发表于 2020-3-23 10:39:57

把3行,4行的双等号改为一个等号,因为双等号是比较左右两边的数据是否相等,而一个等号是赋值运算,也就是把右边的数据赋值给左边

嘉伦放心飞 发表于 2020-3-23 12:53:21

wuqramy 发表于 2020-3-23 10:05
双等号(==)是用来判断等号两边是否相等的,赋值是用单等号(=)
代码还有隐藏的bug,正确代码如下:

最后一个不能用else。是我有哪种情况漏掉没分析吗
页: [1]
查看完整版本: name(number) is not defined?