鱼C论坛

 找回密码
 立即注册
查看: 1677|回复: 7

[已解决]《零基础入门学习Python》(老版) 009讲动动手0

[复制链接]
发表于 2020-3-23 07:01:57 | 显示全部楼层 |阅读模式

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

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

x
请问为什么我输入正确答案在第一第二次时,可以弹出’密码正确‘,但是第三次无论输入什么 都会显示’机会用完啦‘
总感觉这个代码是有错误的,但是说不出哪里有问题

temp = input('请输入密码:')
answer = 'FishC.com'
times = 3

while times > 1:
    if "*" in temp:
        print('密码中不能含有"*"号!','您还有', times, '次机会!', '请输入密码:', end='')
        temp = input()
    else:
        if temp == answer:
            print('密码正确,进入程序')
            break
        else:
            print('密码输入错误!','您还有', times - 1, '次机会!', '请输入密码:', end='' )
            temp = input()
            times -= 1

else:
    print('机会用完啦')


最佳答案
2020-3-23 21:57:19
uommax 发表于 2020-3-23 18:49
大概懂了!谢谢!但是还有一个小疑问,为什么第三次输入没有参加判断会直接退出,第三次输入不是还是在wh ...

按你的代码模拟一下:
1,输入错误密码;
2,times=3>1,符合条件第1次进入循环,第1次判断密码错误,打印错误,第2次输入错误密码,times-1=2;
3,times=2>1,符合条件第2次进入循环,第2次判断密码错误,打印错误,第3次输入正确密码,times-1=1;
4,times=1>1,不符合条件退出循环,运行else打印'机会用完啦'
所以没有第三次判断的机会,第三次无论输对输错都会退出循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 07:21:09 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-3-23 09:08 编辑

改好了:
  1. temp = input('请输入密码:')
  2. answer = 'FishC.com'
  3. times = 2

  4. while times:
  5.     if "*" in temp:
  6.         print('密码中不能含有"*"号!','您还有', times, '次机会!', '请输入密码:', end='')
  7.         temp = input()
  8.     else:
  9.         if temp == answer:
  10.             print('密码正确,进入程序')
  11.             break
  12.         else:
  13.             times -= 1
  14.             print('密码输入错误!','您还有', times, '次机会!', '请输入密码:', end='' )
  15.             temp = input()


  16. else:
  17.     print('机会用完啦')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 08:55:10 | 显示全部楼层
本帖最后由 uommax 于 2020-3-23 08:57 编辑


这个我试了下 也不对的。次数变成4次了,不是3次 且其他问题还是在的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 09:05:18 | 显示全部楼层
本帖最后由 sunrise085 于 2020-3-23 09:07 编辑

你应该把input放在判断之前,那样才会正常。
  1. temp = print('请输入密码:')
  2. answer = 'FishC.com'
  3. times = 3

  4. while times > 1:
  5.     temp = input()
  6.     if "*" in temp:
  7.         print('密码中不能含有"*"号!','您还有', times, '次机会!', '请输入密码:', end='')
  8.     else:
  9.         if temp == answer:
  10.             print('密码正确,进入程序')
  11.             break
  12.         else:
  13.             print('密码输入错误!','您还有', times - 1, '次机会!', '请输入密码:', end='' )
  14.             times -= 1
  15. else:
  16.     print('机会用完啦')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 10:04:54 | 显示全部楼层
你的程序只有2次循环,加上开始的input,你有3次input输入,循环里的判断只有2次,所以第三次的输入没有参加判断,直接退出:
解决方法,把input加入到循环中,保持input和判断次数相符:
  1. answer = 'FishC.com'
  2. times = 3

  3. while times > 0:
  4.     temp = input('请输入密码:')
  5.     if "*" in temp:
  6.         print('密码中不能含有"*"号!','您还有', times, '次机会!', end='')
  7.     else:
  8.         times -= 1
  9.         if temp == answer:
  10.             print('密码正确,进入程序')
  11.             break
  12.         else:
  13.             print('密码输入错误!','您还有', times, '次机会!', end='' )

  14. else:
  15.     print('机会用完啦')
复制代码

或者,在源代码基础上增加第三次判断,也就是改成while times>0,然后在密码判断错误后再加一次判断,不过代码太冗长了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 18:49:04 | 显示全部楼层
txxcat 发表于 2020-3-23 10:04
你的程序只有2次循环,加上开始的input,你有3次input输入,循环里的判断只有2次,所以第三次的输入没有参 ...

大概懂了!谢谢!但是还有一个小疑问,为什么第三次输入没有参加判断会直接退出,第三次输入不是还是在while循环里的嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 21:57:19 | 显示全部楼层    本楼为最佳答案   
uommax 发表于 2020-3-23 18:49
大概懂了!谢谢!但是还有一个小疑问,为什么第三次输入没有参加判断会直接退出,第三次输入不是还是在wh ...

按你的代码模拟一下:
1,输入错误密码;
2,times=3>1,符合条件第1次进入循环,第1次判断密码错误,打印错误,第2次输入错误密码,times-1=2;
3,times=2>1,符合条件第2次进入循环,第2次判断密码错误,打印错误,第3次输入正确密码,times-1=1;
4,times=1>1,不符合条件退出循环,运行else打印'机会用完啦'
所以没有第三次判断的机会,第三次无论输对输错都会退出循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 23:51:06 | 显示全部楼层
txxcat 发表于 2020-3-23 21:57
按你的代码模拟一下:
1,输入错误密码;
2,times=3>1,符合条件第1次进入循环,第1次判断密码错误, ...

非常感谢!!!懂了!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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