python - Python 逆向工程——为什么代码会产生这个特定的结果
问题描述
有人问我为什么以下代码会给出以下结果:
def find(j):
if(j>1):
j=find(j//10)-(j%10)
print(j)
else:
j=0
return j
i=122
k=find(i)
结果:
-2
-4
为什么会有这个特别的结果?这是我到目前为止所拥有的:
def find(j)
– 以 j 为参数的反函数 find 如果 j 大于 1,则 find 函数中的参数 j 除以 10 122 % 10 = 2
print (j)
– 调用函数 find 以显示
从这一刻开始,我在挣扎。为什么 -2 和 -4 来自哪里?
解决方案
答案可能是由于 Python 版本的差异。/
即使操作数是整数,现代版本的 Python 也将其视为浮点除法。如果操作数是整数,则Python 2 相当于//
(int 除法)。
如果我修改您的代码以使用 int 除法(这似乎是它的意图,因为它也使用%
运算符)然后我得到预期的结果:
>>> def find(j):
... if(j>1):
... j=find(j/10)-(j%10)
... print(j)
... else:
... j=0
... return j
...
>>> find(122)
-1.22
-3.419999999999999
-5.419999999999999
-5.419999999999999
>>> def find(j):
... if(j>1):
... j=find(j//10)-(j%10)
... print(j)
... else:
... j=0
... return j
...
>>> find(122)
-2
-4
-4
推荐阅读
- r - 如何将 r 中的数据帧分成相等数量的记录组,并在两个数据帧中随机平均分割数据
- python - ORtools 为每个学生分配一门常规课程或三门特殊课程
- javascript - 从毫秒转换日期而不本地化它们
- sql - 加入具有不同前缀和名称的列
- datetime - 将时间范围添加到参数中的单个日期 - SQL Report Builder/SSRS
- c# - lambda表达式到简单的c#
- java - Java - 检查部分对象相等性
- javascript - 在 Javascript 中将比较 (< >) 运算符与非数字字符串一起使用
- javascript - 如何从角度的表单对象中获取验证错误?
- apache-spark - spark:将有序数据保存到镶木地板