xiaofan1228 发表于 2020-2-9 11:44:28

找了半天发现是引号搞的鬼

count = 3
psw = 123321
while count:
    temp = input("请输入六位数字密码")
    if temp.isdigit():
         if temp == psw:
            print("密码正确!")
            break
         elif len(temp) !=6:
            print("位数错误!")
            count = count-1
            print("您还有",count,"次机会")
    else:
      print("非法输入!")
      count = count-1
      print("您还有",count,"次机会")


这个是第一版,发现无论如何也得不到密码正确

后来发现是psw = 123321这一行的问题,应该是psw = “123321”

所以想问大佬,

这种情况下的temp是个字符串而psw是一个数值,这样无论如何他们也不会相等,这么总结对吗?

另,实现上述功能还有更优化的方法吗?求指导

shangjiecat 发表于 2020-2-9 12:19:38

本帖最后由 shangjiecat 于 2020-2-9 14:23 编辑

没错,字符串无论如何都不会和数字相等的
count = 3
psw = '123456'
while count:
    temp = input("请输入六位数字密码")
    if temp.isdigit():
         if temp == psw:
            print("密码正确!")
            break
         elif len(temp) != 6:
            print("密码位数错误!")
         else:#处理如果输入六位数但输入的六位数和psw不一样的问题
            print("密码错误!")
    else:
      print("非法输入!")
    count -= 1
    print("您还有",count,"次机会")
另外,因为密码正确会直接break,所以密码错误的时候count次数都会减1,可以统一处理,稍微少两行代码,另外,你的代码没有处理如果输入六位数但输入的六位数和psw不一样的问题,予以修改
页: [1]
查看完整版本: 找了半天发现是引号搞的鬼