鱼C论坛

 找回密码
 立即注册
查看: 703|回复: 4

[已解决]新人求助

[复制链接]
发表于 2019-2-2 23:26:51 | 显示全部楼层 |阅读模式

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

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

x
了不起的分支2的课时作业:
设计一个验证用户密码程序,用户只有三次机会输入错误密码,不过如果用户输入的内容包含“*”则不计算在内。
我写的代码是这样的:
chance = 3
password = 'fishc'
while chance > 0:
    number = input('请输入密码:')
    if number == password:
        print('输入正确!')
        break
    elif '*' in number:
        print('密码中不能含有*号,您还有' + chance +'次机会')
        continue
    else:
        print('输入错误,您还有' + (chance-1) + '次机会')
    chance = chance-1
提示错误:TypeError: can only concatenate str (not "int") to str
想请教一下为什么
最佳答案
2019-2-3 08:03:55
本帖最后由 像番茄加两个蛋 于 2019-2-3 08:05 编辑

错误提示: 20190203074432.png
您看到错误提示后,应尝试着看其意思,看提示的错误寻找出出错的行数。
我们可以从错误提示中看到这句话话 :
File "D:/360MoveData/Users/34795/Desktop/1.py", line 12, in <module>

其中有一个line 12说明在代码的第十二行出错。
再看错误类型提示:
TypeError: must be str, not int

意思为必须是字符串不能是整数。
然后我们找到第12行的代码:
  1. print('输入错误,您还有' + chance-1 + '次机会')
复制代码

我们可以看到一个字符串加上一个变量(这变量类型为整数)减去1再加上一个字符串。
从这行代码再根据错误类型我们就可以大概知道问题出现在了chance-1上,因为它是一个整数类型而不是字符串,我们一定牢记字符串类型和整数类型是不能相加的
所以我们要想办法将其整体转换为字符串。此时我们需要一个str()方法来将其转换为字符串类型。
更改后的代码:
  1. print('输入错误,您还有' + str(chance-1) + '次机会')
复制代码
注意:一定要将chance-1小括号括起来使它们成为一个整体一起转换为字符串类型。
我们再回头看所有代码会发现第9行代码也存在着一样的问题:
  1. print('密码中不能含有*号,您还有' + chance +'次机会')
复制代码
也是字符串+整数类型变量+字符串。所以需要将其转换为字符串:
  1. print('密码中不能含有*号,您还有' + str(chance) +'次机会')
复制代码




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

使用道具 举报

发表于 2019-2-2 23:32:23 | 显示全部楼层
print('密码中不能含有*号,您还有' + str(chance) +'次机会')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-3 00:18:26 | 显示全部楼层
print('输入错误,您还有' + str(chance-1) + '次机会')也改下。这里报错应该是说字符串类型和整型不能相加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-3 00:19:38 | 显示全部楼层
整型不能和字符串加在一起
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-3 08:03:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 像番茄加两个蛋 于 2019-2-3 08:05 编辑

错误提示: 20190203074432.png
您看到错误提示后,应尝试着看其意思,看提示的错误寻找出出错的行数。
我们可以从错误提示中看到这句话话 :
File "D:/360MoveData/Users/34795/Desktop/1.py", line 12, in <module>

其中有一个line 12说明在代码的第十二行出错。
再看错误类型提示:
TypeError: must be str, not int

意思为必须是字符串不能是整数。
然后我们找到第12行的代码:
  1. print('输入错误,您还有' + chance-1 + '次机会')
复制代码

我们可以看到一个字符串加上一个变量(这变量类型为整数)减去1再加上一个字符串。
从这行代码再根据错误类型我们就可以大概知道问题出现在了chance-1上,因为它是一个整数类型而不是字符串,我们一定牢记字符串类型和整数类型是不能相加的
所以我们要想办法将其整体转换为字符串。此时我们需要一个str()方法来将其转换为字符串类型。
更改后的代码:
  1. print('输入错误,您还有' + str(chance-1) + '次机会')
复制代码
注意:一定要将chance-1小括号括起来使它们成为一个整体一起转换为字符串类型。
我们再回头看所有代码会发现第9行代码也存在着一样的问题:
  1. print('密码中不能含有*号,您还有' + chance +'次机会')
复制代码
也是字符串+整数类型变量+字符串。所以需要将其转换为字符串:
  1. print('密码中不能含有*号,您还有' + str(chance) +'次机会')
复制代码




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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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