鱼C论坛

 找回密码
 立即注册
查看: 1408|回复: 11

[已解决]python 第九课课后作业疑问

[复制链接]
发表于 2018-1-23 23:07:39 | 显示全部楼层 |阅读模式

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

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

x
设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含‘*’则不计算在内。 谁能解释一下为什么会如下代码这么写,新手解释的越详细越好,谢谢
count = 3
password = 'FishC.com'

while count:
    passwd = input('请输入密码:')
    if passwd == password:
        print('密码正确,进入程序......')
        break
    elif '*' in passwd:
        print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
        continue
    else:
        print('密码输入错误!您还有', count-1, '次机会!', end=' ')   
    count -= 1
最佳答案
2018-1-23 23:51:15

第一行:循环次数控制  等于几即最大可以输入几次密码
第二行:正确密码
第三行:空白
第四行:循环开始 后面的都是循环体
第五行:输入密码,并将值赋给passwd
第六行:第一个可能性——判断输入正确  “==” 判断相等   相等执行下面代码   不相等跳到elif执行
第七行:打印
第八行:break跳出循环(你去掉不管输什么都是三次)
第九行:上面说了
第10行:打印
第11行:continue 结束本次循环,开始执行下一次循环(直接跳到while count)
第12行:else 除……之外   排除上面if和elif的可能性之外的所以情况执行这部分(第13行语句)
第13行:打印
第14行:执行到这来肯定是执行了else 你把这行缩进结果一样  判断错误,次数减一   count -= 1 即 count = count - 1
第一次做全代码解释,真心累   应该重头在看一遍 要不后面你怎么看得懂!
222222222222.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-23 23:11:07 | 显示全部楼层
没太看懂问题意思?是代码没看懂还是逻辑没理清?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 23:15:56 | 显示全部楼层
太阳花田 发表于 2018-1-23 23:11
没太看懂问题意思?是代码没看懂还是逻辑没理清?

我就是不太明白为什么这个问题和图片显示的内容,会用这个代码来写,帮忙解释下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 23:17:47 | 显示全部楼层
yolol 发表于 2018-1-23 23:15
我就是不太明白为什么这个问题和图片显示的内容,会用这个代码来写,帮忙解释下

while count:    这一句在这个问题中代表什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 23:18:34 | 显示全部楼层
yolol 发表于 2018-1-23 23:15
我就是不太明白为什么这个问题和图片显示的内容,会用这个代码来写,帮忙解释下

elif '*' in passwd:  这句也不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 23:25:27 | 显示全部楼层
yolol 发表于 2018-1-23 23:17
while count:    这一句在这个问题中代表什么意思?

这是while循环,开始count为3  即while 3: while后不为0或false都为真,会执行后面循环体里面的代码,所以循环体中 count -= 1便是循环控制 当count减到0后循环便不会执行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 23:29:19 | 显示全部楼层
yolol 发表于 2018-1-23 23:18
elif '*' in passwd:  这句也不懂

elif 即else if(其他语言一般这么写) 即除上面的可能性之外另一种可能性 '*' in password 是一个布尔(取值只有真或假)表达式,意思为 password这个变量(名字)代表的字符串里有*   有即值为真,无即值为假  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-23 23:35:06 | 显示全部楼层
太阳花田 发表于 2018-1-23 23:29
elif 即else if(其他语言一般这么写) 即除上面的可能性之外另一种可能性 '*' in password 是一个布尔( ...

能不能整个代码给我解释一遍 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-23 23:51:15 | 显示全部楼层    本楼为最佳答案   

第一行:循环次数控制  等于几即最大可以输入几次密码
第二行:正确密码
第三行:空白
第四行:循环开始 后面的都是循环体
第五行:输入密码,并将值赋给passwd
第六行:第一个可能性——判断输入正确  “==” 判断相等   相等执行下面代码   不相等跳到elif执行
第七行:打印
第八行:break跳出循环(你去掉不管输什么都是三次)
第九行:上面说了
第10行:打印
第11行:continue 结束本次循环,开始执行下一次循环(直接跳到while count)
第12行:else 除……之外   排除上面if和elif的可能性之外的所以情况执行这部分(第13行语句)
第13行:打印
第14行:执行到这来肯定是执行了else 你把这行缩进结果一样  判断错误,次数减一   count -= 1 即 count = count - 1
第一次做全代码解释,真心累   应该重头在看一遍 要不后面你怎么看得懂!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 08:09:21 | 显示全部楼层
太阳花田 发表于 2018-1-23 23:51
第一行:循环次数控制  等于几即最大可以输入几次密码
第二行:正确密码
第三行:空白

楼主看不懂说明之前的课没吸收,确实应该重新温故一遍,不然后面更看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-24 18:09:39 | 显示全部楼层
太阳花田 发表于 2018-1-23 23:51
第一行:循环次数控制  等于几即最大可以输入几次密码
第二行:正确密码
第三行:空白

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

使用道具 举报

发表于 2018-3-31 22:29:10 | 显示全部楼层
太阳花田 发表于 2018-1-23 23:51
第一行:循环次数控制  等于几即最大可以输入几次密码
第二行:正确密码
第三行:空白

第三次输入错误后
会出现'密码错误,你还有O次机会.'
为什么 around都是0了
还循环一次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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