快速排序 python

# 快排
def quickSort(arr):    
    if len(arr) <= 1:        
        return arr    
    pivot = arr[len(arr) // 2]    
    left = [x for x in arr if x < pivot]    
    middle = [x for x in arr if x == pivot]    
    right = [x for x in arr if x > pivot]    
    return quickSort(left) + middle + quickSort(right)

人脸检测 python

# 人脸检测
import cv2
def check_isMan(_file_name):
    cascPath = "lbpcascade_frontalface.xml"
    faceCascade = cv2.CascadeClassifier(cascPath)
    img = cv2.imread(_file_name)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)                                  #将图像转化为灰色图
    faces = faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30, 30),flags=cv2.CASCADE_SCALE_IMAGE)                     #检测是否图像是否为人脸,并返回值赋值给faces
    if face != None:
        return True
    else:
        return False

采集ADC0832的示例 python

# 采集ADC0832的示例
import wiringpi as gpio
def GetADC0832_Value(ADC_CS=0,ADC_SDA=2,ADC_SCL=1):#默认为wiringpi的0 2 1脚   采集ADC_0832 CH0通道的数据
        dat1=0
        dat2=0
        gpio.digitalWrite(ADC_SCL,0)
        gpio.digitalWrite(ADC_SDA,1)
	gpio.digitalWrite(ADC_CS, 0) #开始
	gpio.digitalWrite(ADC_SCL,1) #第一个上升沿

	gpio.digitalWrite(ADC_SCL,0)
	gpio.digitalWrite(ADC_SDA,1) #第二个上升沿
	gpio.digitalWrite(ADC_SCL,1) 
	gpio.digitalWrite(ADC_SCL,0) 
	
	gpio.digitalWrite(ADC_SDA,0) #这里若写ADC_SDA为1,则选用通道1进行AD转换
	gpio.digitalWrite(ADC_SCL,1) #第三个上升沿
	gpio.digitalWrite(ADC_SCL,0) #第三个下降沿
	gpio.digitalWrite(ADC_SDA,1)

	for i in range(0,8):
	    gpio.digitalWrite(ADC_SCL,1)
	    gpio.digitalWrite(ADC_SCL,0) #开始从第四个下降沿接收数据
	    gpio.pinMode(ADC_SDA, gpio.INPUT)
	    dat1=dat1<<1 | gpio.digitalRead(ADC_SDA)
	
	for i in range(0,8): #接收校验数据
	    dat2 = dat2 | (gpio.digitalRead(ADC_SDA)<<i)
	    gpio.digitalWrite(ADC_SCL,1)
	    gpio.digitalWrite(ADC_SCL,0)
        gpio.digitalWrite(ADC_CS,1)	
	if(dat1==dat2): #与校验数据比较,正确就返回数据,否则返回0
            return dat1
        return 0

DHT114传感器的采集 python

# DHT114传感器的采集
import RPi.GPIO as GPIO
def Get_DHT114(channel=16): #获取DHT114传感器数值,默认使用端口16,按物理位置为16的口 (非wiringpi的)  
	data = []                        #赋值data为空
	j = 0                            #赋值j为0
	GPIO.setmode(GPIO.BOARD)         #告诉程序按物理位置找GPIO头
	time.sleep(1)                    #延时一秒
	GPIO.setup(channel, GPIO.OUT)    #设置channel口为输出
	GPIO.output(channel, GPIO.LOW)   #设置channel口为低电平
	time.sleep(0.02)                 #延时0.02秒
	GPIO.output(channel, GPIO.HIGH)  #设置channel口为高电平
	GPIO.setup(channel, GPIO.IN)     #设置channel口为输入

	while GPIO.input(channel) == GPIO.LOW:  #获取将标号为channel的针的电平是否为低电平
		continue                        #如果条件成立则则继续
	while GPIO.input(channel) == GPIO.HIGH: #获取将标号为channel的针的电平是否为高电平
		continue                        #如果条件成立则则继续

	while j < 40:
		k = 0                                   #赋值k为0
		while GPIO.input(channel) == GPIO.LOW:  #获取将标号为channel的针的电平是否为低电平
			continue                        #如果条件成立则则继续
		while GPIO.input(channel) == GPIO.HIGH: #获取将标号为channel的针的电平是否为高电平
			k += 1                          #如果条件成立则  k+1
			if k > 100:                     #如果k大于100
				break                   #如果条件成立则跳出
		if k < 8:                               #如果k小于8
			data.append(0)                  #如果条件成立则data数组加0
		else:
			data.append(1)                  #如果条件不成立则data数组加1

		j += 1                                  # j+1

	print ("sensor is working.")
	print (data)                                    #输出data数据

	humidity_bit = data[0:8]                         #将data数组的0-8位赋值给改变量
	humidity_point_bit = data[8:16]                  #将data数组的8-16位赋值给改变量
	temperature_bit = data[16:24]                    #将data数组的16-24位赋值给改变量
	temperature_point_bit = data[24:32]              #将data数组的24-32位赋值给改变量
	check_bit = data[32:40]                          #将data数组的32-40位赋值给改变量
        ##############################全部赋值为0
	humidity = 0
	humidity_point = 0
	temperature = 0
	temperature_point = 0
	check = 0
        ##############################
	for i in range(8): #根据公式循环8次 来计算每一位的值
		humidity += humidity_bit[i] * 2 ** (7-i)
		humidity_point += humidity_point_bit[i] * 2 ** (7-i)
		temperature += temperature_bit[i] * 2 ** (7-i)
		temperature_point += temperature_point_bit[i] * 2 ** (7-i)
		check += check_bit[i] * 2 ** (7-i)

	tmp = humidity + humidity_point + temperature + temperature_point

	if check == tmp:   #比较数据 如果正确则输出
		print ("temperature :", temperature, "*C, humidity :", humidity, "%")
		mytemp = '%f' %temperature
		myhumi = '%f' %humidity
		mycheck = '%d' %check
		mytmp = '%d' %tmp
		tmp_output = open(family_path+r'/tmp_data.txt', 'w')   #创建一个 file 对象
		hud_output = open(family_path+r'/hum_data.txt', 'w')    #创建一个 file 对象
		checks = open(family_path+r'/check.txt', 'w')   #创建一个 file 对象
		tmps = open(family_path+r'/tmp.txt', 'w')   #创建一个 file 对象
		tmp_output.write(mytemp)     #将mytemp的值写入tmp_data.txt文件中   温度
		hud_output.write(myhumi)     #将myhumi的值写入hum_data.txt文件中    湿度
		checks.write(mycheck)     #将mycheck的值写入check.txt.txt文件中
		tmps.write(mytmp)     #将mytmp的值写入tmp.txt文件中
		tmp_output.close
		hud_output.close
		checks.close
		tmps.close
		GPIO.cleanup()
	else:
		print ("wrong")
		checks = open(family_path+'/check.txt', 'w')   #创建一个 file 对象
		tmps = open(family_path+'/tmp.txt', 'w')   #创建一个 file 对象
		checks.write('%d' %check)    #将check的值写入check.txt.txt文件中
		tmps.write('%d' %tmp)    #将tmp的值写入check.txt.txt文件中
		checks.close
		tmps.close
		print ("temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp)

数组排序 python

def sort_(lists):
    return list(set(lists))