我正在尝试构建一个函数,其中函数执行此任务的不仅是整数,还包括八进制数。例如,
def solution(S):
number = [int(i) for i in str(S)]
print number
solution(111025)
solution(002110)
solution(000002222)
输出:
[1, 1, 1, 0, 2, 5]
[1, 0, 9, 6]
[1, 1, 7, 0]
如何将第二个和第三个数字设为[0,0,2,1,1,0]和[0,0,0,0,0,2,2,2,2]?
答案 0 :(得分:1)
我认为没有办法做到这一点,至少在传递数字时。假设您改为呼叫def same_as_post?
description == post.description && title == post.title && tags == post.tags
end
或solution(1+2)
。所有solution(someFcnReturningANumber())
都知道其参数的最终解析值;没有办法(我知道)它可以反省它的确切调用方式。
另一方面,如果你传入一个字符串,那么检查这是否是一个数字的有效字符串表示并将其拆分成数字是微不足道的。
答案 1 :(得分:1)
如上所述,这基本上是(*)不可能的。您必须修改已将代码转换为值的解释器。例如:
>>> 0x0010 is 000020 is 16 # (**)
True
>>> 0x0010 is 0x00000000000010 # (**)
True
>>> type(1) == type(01) == type(0x1) == type(int)
True
(*)您可以通过使用numbers.py
区分是否从源文件(例如inspect.getsourcelines(number)
)解释了这一点,但此时您真的真的朝向错误的方向。
(**)请注意,在上面我们滥用了python为-5
和256
之间的整数存储单例的事实,因此is
比较显示值相同内部表示(实际上是指向相同值的指针)。在实际使用中,==
是潜在的非单一值(例如数字)的正确比较。