鱼C论坛

 找回密码
 立即注册
查看: 1263|回复: 8

[已解决]零基础入门python课后作业第009讲

[复制链接]
发表于 2018-3-20 16:00:40 | 显示全部楼层 |阅读模式

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

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

x
麻烦请问各位大神
为什么把代码改成这样就不能成功运行出来呢?

enteredword = input("输入密码才能进入哦:")
count = 3
password = 'yolandaisafuckingenius'
while count:
    if enteredword == password:
        print("密码对喽,快进去玩吧,你个小机灵鬼")
        break
    elif '*' in enteredword:
        print("重新输一次啦,密码里不能有\"*\"号哟")
        continue
    else:
        print("不对不对啦,你还有",count-1,"次机会")
    count -= 1

好困惑啊,求大神答疑
最佳答案
2018-3-20 16:32:38
你的while循环中没有接受输入的语句,所以无法在每次循环的时候输入密码,修改如下
  1. enteredword = input("输入密码才能进入哦:")
  2. count = 3
  3. password = 'yolandaisafuckingenius'
  4. while count:
  5.     if enteredword == password:
  6.         print("密码对喽,快进去玩吧,你个小机灵鬼")
  7.         break
  8.     elif '*' in enteredword:
  9.         print("重新输一次啦,密码里不能有"*"号哟")
  10.         enteredword = input("输入密码才能进入哦:")
  11.         continue
  12.     else:
  13.         print("不对不对啦,你还有",count-1,"次机会")
  14.         enteredword = input("输入密码才能进入哦:")
  15.     count -= 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-20 16:32:38 | 显示全部楼层    本楼为最佳答案   
你的while循环中没有接受输入的语句,所以无法在每次循环的时候输入密码,修改如下
  1. enteredword = input("输入密码才能进入哦:")
  2. count = 3
  3. password = 'yolandaisafuckingenius'
  4. while count:
  5.     if enteredword == password:
  6.         print("密码对喽,快进去玩吧,你个小机灵鬼")
  7.         break
  8.     elif '*' in enteredword:
  9.         print("重新输一次啦,密码里不能有"*"号哟")
  10.         enteredword = input("输入密码才能进入哦:")
  11.         continue
  12.     else:
  13.         print("不对不对啦,你还有",count-1,"次机会")
  14.         enteredword = input("输入密码才能进入哦:")
  15.     count -= 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 16:36:12 | 显示全部楼层
首先说明这个问题我没有做过,不知道原要求是什么。
然后谈一谈你的代码吧:
0.elif '*' in enteredword:
        print("重新输一次啦,密码里不能有\"*\"号哟")
        continue                      这里的continue使用不当,因为continue符合条件后,自动跳过下面的条件,自然count不会变化,enteredword也不会变化,因此会一直循环的。
1.其实还有很多问题。count-=1放到开始比较好,还有你的enteredword每次循环开始的时候需要对变量进行再次赋值啊,感觉你对循环的理解不够。自己思考一下吧。
下面是我的代码,有些繁琐,但是跑起来没有什么逻辑错误。
  1. enteredword = input("输入密码才能进入哦:")
  2. count = 3
  3. password = 'yolandaisafuckingenius'
  4. while count:
  5.     count -= 1
  6.     if enteredword == password :
  7.         print("密码对喽,快进去玩吧,你个小机灵鬼")
  8.         break
  9.     elif '*' in enteredword:
  10.         print("重新输一次啦,密码里不能有"*"号哟:")
  11.         print("不对不对啦,你还有",count,"次机会")
  12.     elif count==0:
  13.         break
  14.     else:
  15.         print("不对不对啦,你还有",count,"次机会")
  16.     enteredword=input('重新输入:')   
  17.    
  18. print('游戏结束!')
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-20 19:29:33 | 显示全部楼层
BngThea 发表于 2018-3-20 16:32
你的while循环中没有接受输入的语句,所以无法在每次循环的时候输入密码,修改如下

非常感谢您的帮助,解决了我一直以来的困惑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-20 19:30:04 | 显示全部楼层
吴阿汤 发表于 2018-3-20 16:36
首先说明这个问题我没有做过,不知道原要求是什么。
然后谈一谈你的代码吧:
0.elif '*' in enteredword: ...

非常感谢您的建议,我实在是太菜了,还要多多学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 20:02:18 | 显示全部楼层
drwyatt 发表于 2018-3-20 19:30
非常感谢您的建议,我实在是太菜了,还要多多学习

啊哈哈,看了最佳答案的话,我想我明白了要求是什么了。
当输入*的时候不算使用了一次机会,所以此处使用了continue语句,这样就会跳过count-=1
但是发现有一个问题  就是
输入密码才能进入哦:1
不对不对啦,你还有 2 次机会
输入密码才能进入哦:2
不对不对啦,你还有 1 次机会
输入密码才能进入哦:3
不对不对啦,你还有 0 次机会
输入密码才能进入哦:4         这里明明0次机会,还要显示重新输入不符合要求吧,我重新写了一下,你看看,注释的地方是解决的方案
  1. enteredword = input("输入密码才能进入哦:")
  2. count = 3
  3. password = 'yolandaisafuckingenius'
  4. while count:
  5.    
  6.     if enteredword == password :
  7.         print("密码对喽,快进去玩吧,你个小机灵鬼")
  8.         break
  9.     elif '*' in enteredword:
  10.         print("重新输一次啦,密码里不能有"*"号哟:")
  11.         enteredword=input('重新输入:')
  12.         continue
  13.     elif count==0:      #这个elif语句可以解决问题
  14.         break
  15.     else:
  16.         print("不对不对啦,你还有",count,"次机会")
  17.     enteredword=input('重新输入:')   
  18.     count -= 1
  19. print('游戏结束!')
复制代码

加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-22 14:30:42 | 显示全部楼层
吴阿汤 发表于 2018-3-20 20:02
啊哈哈,看了最佳答案的话,我想我明白了要求是什么了。
当输入*的时候不算使用了一次机会,所以此处使 ...

哇哦,谢谢这位大神不吝赐教,感觉完美了耶,感谢感谢,我会继续努力的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 14:57:02 | 显示全部楼层
count = 3
password = 'yolandaisafuckingenius'
while count:
    enteredword = input("输入密码才能进入哦:")
    if enteredword == password:
        print("密码对喽,快进去玩吧,你个小机灵鬼")
        break
    elif '*' in enteredword:
        print("重新输一次啦,密码里不能有\"*\"号哟")
    else:
        print("不对不对啦,你还有",count-1,"次机会")

    count -= 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-17 20:31:39 | 显示全部楼层
请问一下这个 while count 是什么意思,尤其是为什么加count
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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