鱼C论坛

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

[已解决]009讲动动手-请问这个代码哪里出错了?

[复制链接]
发表于 2017-4-18 10:58:00 | 显示全部楼层 |阅读模式

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

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

x
  1. password = 'asdqwe'

  2. times = 3

  3. while times:

  4.     password = input("Please input your pssword:")
  5.     if password == password:
  6.         print ('Enter... Please wait ...')
  7.         break

  8.     elif '*' in password:
  9.         print ('Your password can\'t contain only "*", you have three times to try.')
  10.         continue

  11.     else:
  12.         print ('Worry, you have', times-1, 'chance.', end=' ')

  13.     times -= 1
复制代码



无论输入是什么输出都是‘Enter... Please wait ...’

多谢!
最佳答案
2017-4-18 11:18:49
你原定义的密码和输入的密码都叫password,,当然password == password为真了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-18 11:18:49 | 显示全部楼层    本楼为最佳答案   
你原定义的密码和输入的密码都叫password,,当然password == password为真了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:30:17 | 显示全部楼层
冬雪雪冬 发表于 2017-4-18 11:18
你原定义的密码和输入的密码都叫password,,当然password == password为真了。

哦哦哦,我明白了,两个要不一样才行啊,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 11:31:27 | 显示全部楼层
你有两个问题
1,正如楼上说的,你把2个变量名设置得一样,那当然每次随便输入什么都是正确的
2,即使你把password改的不一样,你也永远没办法猜对,因为你的password=3,这个是一个int整形,但是input("Please input your pssword:")得到的是一个字符串类型,这2个是永远无法相等 的,即使你输入了一个3,也等不了,因为实际上你得到的是“3”,所以你不仅要该名称,还要把后面的字符串变成整形的过程
不过你无法保证输出的一定是数据,所以直接用int()函数转的话,当你输入的不是数字就会报错,所以,如果你真的要判断一下是不是输出数字的话还需要增加判断条件,那就变得复杂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:34:01 | 显示全部楼层
冬雪雪冬 发表于 2017-4-18 11:18
你原定义的密码和输入的密码都叫password,,当然password == password为真了。

你好,请问 代码里的 ‘while times:’ times 改成其他行不行?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:36:22 | 显示全部楼层
gopythoner 发表于 2017-4-18 11:31
你有两个问题
1,正如楼上说的,你把2个变量名设置得一样,那当然每次随便输入什么都是正确的
2,即使你 ...

但是我是times = 3, 不是password = 3啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:38:03 | 显示全部楼层
gopythoner 发表于 2017-4-18 11:31
你有两个问题
1,正如楼上说的,你把2个变量名设置得一样,那当然每次随便输入什么都是正确的
2,即使你 ...

你的第二点即是说,如果我的密码是数字和字母组合的话,要满足这个条件,需要增加判断条件使代码变得复杂?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 11:38:58 | 显示全部楼层
SRY 发表于 2017-4-18 11:36
但是我是times = 3, 不是password = 3啊

好吧,我搞错了,以为你这个跟猜数字一样是在猜数字
那你这个的错误就是第一条了,第二条的错误不存在,因为你的password本身就是一个字符串,不存在后面的转换问题

人老了,眼花
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-18 11:40:24 | 显示全部楼层
gopythoner 发表于 2017-4-18 11:38
好吧,我搞错了,以为你这个跟猜数字一样是在猜数字
那你这个的错误就是第一条了,第二条的错误不存在, ...

哈哈,
请问如果我的密码即使是数字和字母组合,我用'str' 是可以的对吧?  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 11:41:18 | 显示全部楼层
SRY 发表于 2017-4-18 11:38
你的第二点即是说,如果我的密码是数字和字母组合的话,要满足这个条件,需要增加判断条件使代码变得复杂 ...

不是的,如果你的密码是一个数字的话,就需要转换,但是你这个是字符串就不存在
你这个跟猜数字游戏是一个道理,只不错猜数字游戏里面猜的是数字,需要有转换这个过程,不然等不了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-18 11:43:06 | 显示全部楼层
SRY 发表于 2017-4-18 11:40
哈哈,
请问如果我的密码即使是数字和字母组合,我用'str' 是可以的对吧?

数字和字母组合就是字符串,跟你现在的没区别,只有纯数字的时候有点特殊而已
出数字需要转换,在转换之前又需要判断是否输入的是纯数字,不然直接转换可能会报错

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
SRY + 5 + 5 + 3 多谢你!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2017-4-18 11:44:44 | 显示全部楼层
gopythoner 发表于 2017-4-18 11:41
不是的,如果你的密码是一个数字的话,就需要转换,但是你这个是字符串就不存在
你这个跟猜数字游戏是一 ...

啊,明白了,这就是为什么猜数字里有

  1. temp = input()
  2. guess = int(temp)
复制代码


之前我对这里一直不懂,多谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-27 00:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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