水滴石穿007 发表于 2021-5-19 21:40:44

请问小甲鱼的这个程序为什么可以跑起来

如图所示 为什么不会报错呢

hrp 发表于 2021-5-19 21:46:48

你为啥会认定 result 是 int 呢?函数不是定义 result = '' 了吗,明显是字符串啊

Twilight6 发表于 2021-5-19 21:58:56



是传入参数 dec 为 int 类型数据

而 result 是被赋值 str() 转化 dec%2 后的数值为字符串进行字符串拼接

水滴石穿007 发表于 2021-5-19 22:08:24

hrp 发表于 2021-5-19 21:46
你为啥会认定 result 是 int 呢?函数不是定义 result = '' 了吗,明显是字符串啊

谢谢回复 但是第5行 不是把整形赋值给 result了吗

水滴石穿007 发表于 2021-5-19 22:08:59

Twilight6 发表于 2021-5-19 21:58
是传入参数 dec 为 int 类型数据

而 result 是被赋值 str() 转化 dec%2 后的数值为字符串进行字符串 ...

谢谢回复 但是 第5行 不是把整形赋值给 result了吗

hrp 发表于 2021-5-19 22:18:15

水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是第5行 不是把整形赋值给 result了吗

Dec2Bin 返回的也是字符串:else分支的 result, if 分支的 result + str(dec%2),并没有出现你说的整型哦,所以第 5 行 result 被赋值的值也是字符串

柿子饼同学 发表于 2021-5-19 22:24:55

水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是 第5行 不是把整形赋值给 result了吗

它后面不是有str(dec%2)嘛,那就是字符串呀
相加怎么就矛盾呢

Peteryo01223 发表于 2021-5-20 08:40:08

本帖最后由 Peteryo01223 于 2021-5-20 08:57 编辑

从纯数学的角度,你可以说 result 为 整数,因为你写了地板除法的语句。但,在 Python 看来,这个整数,依然是一个 str。
类似于《白蛇传》里,从许仙的角度,你可以说白素贞他的妻子,是个人了。但,在法海看来,她依然是个妖精,所以把它像处理其他妖精一样地抓起来,法海觉得很正常,许仙则接受不了。

Twilight6 发表于 2021-5-20 13:20:45

水滴石穿007 发表于 2021-5-19 22:08
谢谢回复 但是 第5行 不是把整形赋值给 result了吗


第五行的代码是 result 被赋值为 Dec2Bin 函数的返回值,只是这个函数的参数是整型,并不代表函数返回值是整型

然后让我们来看看 Dec2Bin 函数设置的返回值 return 是什么,函数中初始化时设置 result 为空字符串,显然此时为 字符串型

然后我们看函数 中仅有的两个 return , if 中的 return 是 result 与 str()的拼接

而 else 代码块中的 return 直接返回的是 result 本身

从始至终都没被赋值为整型,且初始化时还是字符串,运行过程也是字符串赋值,所以整个函数返回的就是字符串类型的数据~
页: [1]
查看完整版本: 请问小甲鱼的这个程序为什么可以跑起来