if(a&b | c)如何在Python中执行?

时间:2019-01-05 06:29:37

标签: python if-statement logic bitwise-operators

以下是名人问题的解决方案。

问题:假设您正在与n个人(标记为0到n-1)一起参加聚会,并且其中可能有一位名人。名人的定义是,所有其他n-1个人都认识他/她,但他/她却不认识任何一个人。

现在,您想找出名人是谁,或确认没有名人。您唯一可以做的就是问一些问题,例如:“嗨,A。您认识B吗?”以获得有关A是否认识B的信息。您需要通过问尽可能少的问题(渐近意义上)来找出名人(或确认没有名人)。

def knows(a,b): //Function that returns 1 if a knows b else returns 0

people = [[0,0,0,0],[1,0,1,0],[1,0,0,0],[1,0,0,0]]
for i in range(0,4):
        for j in range(0,4):
            if(people[a][b]==1):
                return 1
            else:
                return 0


 a = 0
 c=0
 for b in range(1,4):
        if(knows(a,b)):
             c=b

 for i in range(0,4):
        if((i!=c) & (knows(i,c)) | (knows(c,i))!=1): //1
               print c

我想知道//1是如何执行的。在上述情况下,0是名人。因此c =0。因此在第二次迭代中:

i = 1
c = 0
i!=c //Since 1!=0, its true so we get 1
knows(1,0) //1 knows 0 hence return value : 1
knows(0,1) //0 doesn't know 1 hence return value : 0

所以//1将是:

if (1 & 1 | 1):
    print c 

这里应该打印c,但是不会打印出来,它会转到下一个迭代。

1 个答案:

答案 0 :(得分:1)

 LocationCallback mLocationCallback = new LocationCallback(){
    @Override
    public void onLocationResult(LocationResult locationResult) {
        for(Location location : locationResult.getLocations()){
            if(getApplicationContext()!=null){
                mLastLocation = location;

                LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());

                //mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
                //mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
                if(!getDriversAroundStarted)
                    getDriversAround();
            }
        }
    }
};

检查python operator precedence table了解更多详细信息。