鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 6

[已解决]python第九课遇到的问题

[复制链接]
发表于 2017-7-30 16:40:41 | 显示全部楼层 |阅读模式

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

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

x
temp=input('请输入密码:')
i=3
answer='fish'
while i and temp!=answer:
    if '*' in temp:
        print('密码中不能含有“*”号!')
        i+=1
    elif temp==answer:
        print('密码正确,进入程序----------')
    i-=1
    if i==0:
        print("机会用完啦")
    temp = input('你还有' + str(i) + '次机会,请重新输入:')

这是第九讲课后习题猜密码的程序,我在输入‘fish’密码后,并没有打印'密码正确,进入程序----------'
求各位鱼油帮忙,手动艾特各位大神版主
最佳答案
2017-7-30 17:00:00
你的while循环开始就判断密码是否正确,如果正确就不进入循环,所以就不会打印'密码正确,进入程序----------'
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-30 17:00:00 | 显示全部楼层    本楼为最佳答案   
你的while循环开始就判断密码是否正确,如果正确就不进入循环,所以就不会打印'密码正确,进入程序----------'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-30 17:38:20 | 显示全部楼层
这种循环判断的情况,不要用判断条件去作为循环条件。

因为你是不正确才进入循环,所以你输入fish后就不会进入循环,当然不会执行相关语句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-30 17:43:21 | 显示全部楼层
冬雪雪冬 发表于 2017-7-30 17:00
你的while循环开始就判断密码是否正确,如果正确就不进入循环,所以就不会打印'密码正确,进入程序--------- ...

谢谢,我知道啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-30 17:43:49 | 显示全部楼层
yongxi 发表于 2017-7-30 17:38
这种循环判断的情况,不要用判断条件去作为循环条件。

因为你是不正确才进入循环,所以你输入fish后就不 ...

谢谢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-30 17:50:02 | 显示全部楼层
  1. i=3
  2. answer='fish'
  3. temp=input('请输入密码:')
  4. if temp == answer:
  5.         print('密码正确,进入程序----------')
  6. while i and temp != answer:
  7.     if '*' in temp:
  8.         print('密码中不能含有“*”号!')
  9.         i+=1
  10.     if temp.isdigit:
  11.         print("不是输入数字啦!")
  12.         i-=1
  13.     if i==0:
  14.         print("机会用完啦")
  15.     temp = input('你还有' + str(i) + '次机会,请重新输入:')
复制代码

赞同楼上说的,确实是因为在while循环前就已经确定答案,所以就不进入循环了,换个位子就好了,但是我在实际测试中发现这个代码在i=0的时候依然还会输出:“你还有0次机会请输入”,然后输入才会结束,我想了半天也不知道怎么解决,望有大佬看到我的问题能解答一下。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-30 18:02:39 | 显示全部楼层
本帖最后由 圆冶治 于 2017-7-30 18:04 编辑

PS:楼上我的代码错误了,刚刚又试了一下,发现之前的代码只有第一次输入答案才能输出“密码正确,进入程序”。然后我用自己的笨办法改了一下。就是在循环外和循环里面各写一次输入答案打印出文本。如果有什么更好的方法我也希望学习。
代码如下:
  1. i=3
  2. answer='fish'
  3. temp=input('请输入密码:')
  4. if temp == answer:
  5.         print('密码正确,进入程序----------')
  6. while (i) and (temp != answer):
  7.     if '*' in temp:
  8.         print('密码中不能含有“*”号!')
  9.         i+=1
  10.     if temp.isdigit:
  11.         print("不是输入数字啦!")
  12.         i-=1
  13.     if i==0:
  14.         print("机会用完啦")
  15.     temp = input('你还有' + str(i) + '次机会,请重新输入:')
  16. if temp == answer:
  17.     print('密码正确,进入程序----------')
  18.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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