【python】已解决:TypeError: can only concatenate str (not “int“) to str的解决方案

                                           1.发现问题

不说废话,直接看编译器报错界面(因为在修改过程中出现代码变动,所以部分图片代码行号出现不相符情况,但并不影响思路及解决方法的说明):

由报错内容可以了解到,出错由格式导致,即应为字符串(str)之间的处理,但程序中出现了字符串与数值(int)间的混乱处理 。

退回到编译器界面,原部分代码如图所示:

稍作解释 :一个程序的分组模块,用来验证参与人数是否是指定每组人数的倍数,如果不成立则在总人数中添加1人,通过迭代的方法达到目的

                                        2.定位错误原因

由报错界面定位到出错代码段:参照图2第65行

   TheNumberOfPlayers2+=1

 因为编译器表示错误是格式混乱导致,应用type函数来获取当前出错变量的格式

type(variable)
#variable指你要获取格式的变量名

print(type(variable))
#直接打印变量格式

运行得到如图所示界面

ok说明我们已经发现问题:

   TheNumberOfPlayers2+=1

我们企图让一个字符串进行数学运算,显然这是不可能实现的,我们需要做的,是将该字符串转换为数,这样才能满足数学运算的要求

修改后如图所示(注:此时我已将变量名做了修改,引入了一个新的变量TheNumberOfPlayer3)

 

关键在第61行,我们使用int()将原来的字符串格式的 TheNumberOfPlayer2转化为整数格式的TheNumberOfPlayer3,用TheNumberOfPlayer3进行接下来的操作。

现在再来测试一下TheNumberOfPlayer3的格式,还是使用type()函数

问题解决,我们来测试一下程序运行是否正常 

问题至此解决。

                                        3.回顾问题发生原因 

经过笔者的反复断点测试,笔者终于在一个角落发现了问题产生的原因:如图所示

if(str.isdigit(TheNumberOfPlayers2)==False):

在先前的一个模块中,为了保证用户输入内容的合法性,笔者加入了验证代码部分,正是在这行代码中TheNumberOfPlayers2的格式从数转成了字符串,致使下行代码出错,因此,在程序设计中,时时刻刻保持严谨的态度是至关重要的。

纵使笔者已十分认真编写学习中遇到的曾困惑一时的问题,但难免存在疏漏和谬误,笔者在此编写是因为网络上解答众多,但真正能有帮助者寥寥无几,希望这些努力能对你有所帮助,也欢迎大家随时批评指正! 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值