鱼C论坛

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

[已解决]0基础python第九课动手作业1 自打代码出BUG 请大佬指点

[复制链接]
发表于 2018-6-6 11:57:43 | 显示全部楼层 |阅读模式

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

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

x
times = 3
password = "chen"

while times: #循环 "times"
    passwd = input("请输入密码:")
    if passwd == password:
        print("密码输入正确")
        break
    elif "*" in passwd:
        print("密码中不能含有"*" 你还有 times 次机会,end=" "")
        continue
    else:
        times -= 1
        print("密码不正确 你还有 ,times-1, 次机会输入")
        
要求是 设置一个检验密码的程序 一共有3次机会  如果输入内容带有“*” 则不减机会次数
代码打了以后出现两个问题
1。 当输入 * 号时 出现红字
  print("密码中不能含有"*" 你还有 times 次机会,end=" "")
TypeError: can't multiply sequence by non-int of type 'str'

2。输入错误时 直接提示的  “你还有 times-1 次机会"  而不是times-1 的结果的次数 (但是3次后 循环正常停止)

请问这是为什么
最佳答案
2018-6-6 12:25:41
代码出错在最后一行,不知道你学到 % 格式化运算符没有,如果没有学到,
你可以无视第一种正确代码。
你需要将你需要输出的变量,放到print函数中。

  1. print("密码不正确 你还有 ,times-1, 次机会输入") #你的代码

  2. print("密码不正确 你还有 ,%d, 次机会输入" % times) #正确代码(第一种)

  3. print("密码不正确 你还有 ," + times + ", 次机会输入") #正确代码(第二种)
复制代码


如果有帮助,请设置为最佳答案,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-6 12:25:41 | 显示全部楼层    本楼为最佳答案   
代码出错在最后一行,不知道你学到 % 格式化运算符没有,如果没有学到,
你可以无视第一种正确代码。
你需要将你需要输出的变量,放到print函数中。

  1. print("密码不正确 你还有 ,times-1, 次机会输入") #你的代码

  2. print("密码不正确 你还有 ,%d, 次机会输入" % times) #正确代码(第一种)

  3. print("密码不正确 你还有 ," + times + ", 次机会输入") #正确代码(第二种)
复制代码


如果有帮助,请设置为最佳答案,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 12:42:13 | 显示全部楼层
1 用占位符
用后面的值替代%d,%s之类的
举个例子
"I %s fishC" % 'love'
等价于将 love 替换 %s,所以结果为 "I love fishC"

2 用print的自身格式
print("密码不正确 你还有" ,times-1,"次机会输入")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-6 12:55:34 | 显示全部楼层
simplerjiang 发表于 2018-6-6 12:25
代码出错在最后一行,不知道你学到 % 格式化运算符没有,如果没有学到,
你可以无视第一种正确代码。
你 ...

感谢大佬回复 换成方法2以后 运行出现红字:TypeError: must be str, not int 看字面意思好像说这个不是整数?
后来自我调试 把“,"放引号外面 并且去掉"+"号 这个问题解决 对着答案改的 但是不太理解原理 尤其是 + 和 ,
请问这个+和,是什么意思

2。然后 *号哪个问题以后没解决 看提示是涉及到不是整数的问题? 请大佬指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 12:57:45 | 显示全部楼层
taigefcxj 发表于 2018-6-6 12:55
感谢大佬回复 换成方法2以后 运行出现红字:TypeError: must be str, not int 看字面意思好像说这个不是 ...

不好意思,我给忘了,要加上一个字符串强制转换,因为times 是一个整型,而print() 函数输出需要字符串类型

  1. print("密码不正确 你还有 ,times-1, 次机会输入") #你的代码

  2. print("密码不正确 你还有 ,%d, 次机会输入" % times) #正确代码(第一种)

  3. print("密码不正确 你还有 ," + str(times) + ", 次机会输入") #正确代码(第二种)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 12:58:55 | 显示全部楼层
1\print后面的引号用错了,如果你想将 *号用引号括起来,需要将引号转义,
应该是print("密码中不能含有\"*\" 你还有 %d 次机会" %time)
你现在的写法系统会把*识别为乘法,变成了'密码中不能含有'  乘以 '你还有time次机会',所以报错提示字符串类型不能想乘
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 17:10:09 | 显示全部楼层
times = 3
password = "chen"

while times: #循环 "times"
    passwd = input("请输入密码:")
    if passwd == password:
        print("密码输入正确")
        break
    elif "*" in passwd:
        print("密码中不能含有*你还有" ,times ,"次机会",end=" ")
        continue
    else:
        times -= 1
        print("密码不正确 你还有" ,times, "次机会输入")
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 17:12:24 | 显示全部楼层
按我这个就对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-6 20:53:52 | 显示全部楼层
BngThea 发表于 2018-6-6 12:42
1 用占位符
用后面的值替代%d,%s之类的
举个例子

感谢大佬回复 ! 大佬的内容 暂时还没有学到  不过暂时先留意了  谢谢 !
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-6 20:55:34 | 显示全部楼层
一团守卫饭 发表于 2018-6-6 12:58
1\print后面的引号用错了,如果你想将 *号用引号括起来,需要将引号转义,
应该是print("密码中不能含有\" ...

感谢大佬回复 !讲解十分清楚 很适合我等新手学习 + 理解  但是之前那位大佬先回复的我  就把最佳给他了  我的问题以后还很多 一定有机会给你一个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-6 20:57:01 | 显示全部楼层
chongchuigu 发表于 2018-6-6 17:10
times = 3
password = "chen"

感谢大佬回复! 我把 *号的双引号变成单引号以后就可以正常显示了  也是看到了大佬的代码受到启发的 在想是不是自己引号用错了  感谢 !
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 23:14:45 | 显示全部楼层
taigefcxj 发表于 2018-6-6 20:55
感谢大佬回复 !讲解十分清楚 很适合我等新手学习 + 理解  但是之前那位大佬先回复的我  就把最佳给他了  ...

这个叫 % 格式化运算符,你在后面一些课程会学到。
用于将各种类型的变量数据输出成字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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