今天没事写写小程序,正好最近自学Python(看的是Learning Python 4th Edition),于是自己定义并实现了一个Python的小函数。最好的学习方式就是动手操作,感觉比看书强很多倍。这个函数是实现下面这个问题。这个问题来自Cracking the coding interview 4th edition。
Q: Write a function to determine the number of bits required to convert integer A to integer B.
Input: 31, 14
Output: 2
A:
def foo(a,b):
c=a^b
count=1
if c==0:
return 0
else:
while 1:
c=c&(c-1)
if c>0:
count=count+1
else:
return count
s=foo(31,32)
print(s)
红色部分是Python脚本。它用关键字def定义了一个foo函数。这个函数有两个参数,返回一个整数值。然后打印出来。
有意思的是,Python里面用缩进,而不是大括号来区分scope。while if else后面都有冒号。print变成了函数,这是Python 3和Python2不同的地方。
这个函数实现的功能就是判断两个整数有多少位不一样。思路就是首先把两个数a和b进行异或,得到c。不一样的位就是1,相同的位就是0。再判断c有多少位是1。