AllTheBestCheer 发表于 2020-6-11 16:25:45

while循环问题

设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

passwords = 'FishC.com'
ent = input('请输入密码 (你有三次机会输入):')
times = 3
while passwords != ent:
    if times == 1:
      print ('超出输入次数 结束')
      break
    if passwords == ent:
      print ('密码正确!进入程序。。。。。')
    else:
      if ('*' in ent):
            times -= 1
            ent = input ('密码输入错误!(密码含有*符号) 你还有%d'%(times)+'机会')
      else:
            times -= 1
            ent = input ('密码输入错误!你还有%d'%(times)+'机会')



小白求助啊
其他基本上是没有问题的了,就红色加粗那里
当while循环里面条件不被满足(或者说if passowrds == ent)的时候,就退出循环了?
为什么不打印下一句print ('密码正确!进入程序。。。。。')

Mike_python小 发表于 2020-6-11 16:28:17

本帖最后由 Mike_python小 于 2020-6-11 16:32 编辑

因为 你设置的是passwords != ent 所以 passwords = ent是不可能被执行的
给你改一下代码:
passwords = 'FishC.com'
ent = input('请输入密码 (你有三次机会输入):')
times = 3
while True:
    if times == 1:
      print ('超出输入次数 结束')
      break
    if passwords == ent:
      print ('密码正确!进入程序。。。。。')
        break
    else:
      if ('*' in ent):
            times -= 1
            ent = input ('密码输入错误!(密码含有*符号) 你还有%d'%(times)+'机会')
      else:
            times -= 1
            ent = input ('密码输入错误!你还有%d'%(times)+'机会')


Mike_python小 发表于 2020-6-11 16:28:48

如果可以的话 设置个最佳吧{:10_254:}{:10_254:}{:10_254:}

1223253411 发表于 2020-6-11 16:30:44

本帖最后由 1223253411 于 2020-6-11 16:32 编辑

Mike_python小 发表于 2020-6-11 16:28
因为 你设置的是passwords != ent 所以 passwords = ent是不可能被执行的
给你改一下代码:

我觉的最后的print不能放在最后
因为这样的话无论成不成功都会打印

Mike_python小 发表于 2020-6-11 16:30:49

我现在改了一下 你看改之后的

Twilight6 发表于 2020-6-11 16:31:49

而且你还有个错误 就是输入 * 号 也算入次数了

Mike_python小 发表于 2020-6-11 16:32:15

1223253411 发表于 2020-6-11 16:30
我觉的最后的print不能放在最后
因为这样的话无论成不成功都会打印
加个else吧

谢谢提醒 已改正

Twilight6 发表于 2020-6-11 16:34:18

passwords = 'FishC.com'
ent = input('请输入密码 (你有三次机会输入):')
times = 3
while passwords != ent:
    if times == 1:
      print ('超出输入次数 结束')
      break
    else:
      if ('*' in ent):
            ent = input ('密码输入错误!(密码含有*符号) 你还有%d'%(times)+'机会')
      else:
            times -= 1
            ent = input ('密码输入错误!你还有%d'%(times)+'机会')
    if passwords == ent:
      print ('密码正确!进入程序。。。。。')
if times == 3 :
    print('恭喜你!第一次就猜中了!')

Twilight6 发表于 2020-6-11 16:35:44

Mike_python小 发表于 2020-6-11 16:33
我去 你这叫 先占楼 在解答 你好狠呀
这样别人以为我是抄袭 你是最佳
你这

不是先占在答我是第一次说错了 然后改了我第一次说是 times 的原因

而且你有实力怕什么抄袭?自己不是抄袭就不是!你观念要摆正

Twilight6 发表于 2020-6-11 16:37:57

Mike_python小 发表于 2020-6-11 16:37
我却最佳……
但是这用真的容易被误解

唉无语了我... 你自己看吧,不和你说了

KevinHu 发表于 2020-6-11 16:38:48

Mike_python小 发表于 2020-6-11 16:33
我去 你这叫 先占楼 在解答 你好狠呀
这样别人以为我是抄袭 你是最佳
你这

{:10_247:}这也是一种策略……先到先得{:10_250:}

Mike_python小 发表于 2020-6-11 16:40:59

本帖最后由 Mike_python小 于 2020-6-11 16:43 编辑

KevinHu 发表于 2020-6-11 16:38
这也是一种策略……先到先得

@Twilight6 下次我也用用 看我最佳涨不涨
而且你说这是不是会被误解

1223253411 发表于 2020-6-11 16:40:59

本帖最后由 1223253411 于 2020-6-11 16:49 编辑

什么鬼

passwords = 'FishC.com'
times = 3# 当成计数器吧,循环一次减一次
while times > 0:
    ent = input("请输入密码:")
    if passwords == ent:
      print ('密码正确!进入程序。。。。。')
      break
    else:
      if '*' in ent:
            print('密码输入错误!(密码含有*符号) 你还有%d'%(times)+'机会')
      else:
            times -= 1
            print('密码输入错误!你还有%d'%(times)+'机会')

这样不是更好嘛
times用来当计数器
抛弃不用的东西
又简单,代码可读性又挺高
如果用elif的话更简单

Mike_python小 发表于 2020-6-11 16:42:49

1223253411 发表于 2020-6-11 16:40
什么鬼




我主要是急

qiuyouzhi 发表于 2020-6-11 16:43:37

Mike_python小 发表于 2020-6-11 16:40
@Twilight6 下次我也用用 看我最佳涨不涨
而且你说这是不是会被误解

。。。。。
你心眼也太小了吧
为一个最佳斤斤计较?

Mike_python小 发表于 2020-6-11 16:44:27

qiuyouzhi 发表于 2020-6-11 16:43
。。。。。
你心眼也太小了吧
为一个最佳斤斤计较?

这个事情我不想谈论了 我删帖了

Mike_python小 发表于 2020-6-11 16:47:04

@Mike_python小小

Mike_python小 发表于 2020-6-11 16:50:13

@Twilight6

MIke_python小小 发表于 2020-6-11 16:51:22

@Mike_python小

MIke_python小小 发表于 2020-6-11 16:51:57


@Mike_python小
页: [1] 2
查看完整版本: while循环问题