请问小甲鱼的这个程序为什么可以跑起来
如图所示 为什么不会报错呢 你为啥会认定 result 是 int 呢?函数不是定义 result = '' 了吗,明显是字符串啊是传入参数 dec 为 int 类型数据
而 result 是被赋值 str() 转化 dec%2 后的数值为字符串进行字符串拼接
hrp 发表于 2021-5-19 21:46
你为啥会认定 result 是 int 呢?函数不是定义 result = '' 了吗,明显是字符串啊
谢谢回复 但是第5行 不是把整形赋值给 result了吗 Twilight6 发表于 2021-5-19 21:58
是传入参数 dec 为 int 类型数据
而 result 是被赋值 str() 转化 dec%2 后的数值为字符串进行字符串 ...
谢谢回复 但是 第5行 不是把整形赋值给 result了吗 水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是第5行 不是把整形赋值给 result了吗
Dec2Bin 返回的也是字符串:else分支的 result, if 分支的 result + str(dec%2),并没有出现你说的整型哦,所以第 5 行 result 被赋值的值也是字符串 水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是 第5行 不是把整形赋值给 result了吗
它后面不是有str(dec%2)嘛,那就是字符串呀
相加怎么就矛盾呢 本帖最后由 Peteryo01223 于 2021-5-20 08:57 编辑
从纯数学的角度,你可以说 result 为 整数,因为你写了地板除法的语句。但,在 Python 看来,这个整数,依然是一个 str。
类似于《白蛇传》里,从许仙的角度,你可以说白素贞他的妻子,是个人了。但,在法海看来,她依然是个妖精,所以把它像处理其他妖精一样地抓起来,法海觉得很正常,许仙则接受不了。
水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是 第5行 不是把整形赋值给 result了吗
第五行的代码是 result 被赋值为 Dec2Bin 函数的返回值,只是这个函数的参数是整型,并不代表函数返回值是整型
然后让我们来看看 Dec2Bin 函数设置的返回值 return 是什么,函数中初始化时设置 result 为空字符串,显然此时为 字符串型
然后我们看函数 中仅有的两个 return , if 中的 return 是 result 与 str()的拼接
而 else 代码块中的 return 直接返回的是 result 本身
从始至终都没被赋值为整型,且初始化时还是字符串,运行过程也是字符串赋值,所以整个函数返回的就是字符串类型的数据~
页:
[1]