python奇偶校验函数 python 奇偶校验

python编写函数判断一个数是奇数还是偶数# -*- coding: UTF-8 -*-
num = int(input("输入一个数字: "))
if (num % 2) == 0:
print("{0} 是偶数".format(num))
else:
print("{0} 是奇数".format(num))
程序:
运行结果:
Python如何进行多串口通信?一个串口控制电机 一个串口采集数据?下载pyserial包
def OpenCom(self,*args):#设置端口和波特率selComPort =‘com2’#波特率selBaudRate =9600#奇偶校验selParity = 'N'try:if(not self.mySerial):self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,bytesize=8,parity=selParity,stopbits=1,timeout=5)else:if(self.mySerial.isOpen()):self.mySerial.close()self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate, bytesize=8, parity=selParity, stopbits=1, timeout=5)self.lblInfo['text'] = '打开成功python奇偶校验函数!'except Exception as ex:self.lblInfo['text'] = '打开失败python奇偶校验函数!'
#使用com口发送modbus协议给终端设备 。
def btnEmId_Click(self):
barray = bytearray([0x05, 0x03, 0xA#, 0x54, 0x00, 0x08])
vOldEmId = self.txbOldEmId.get()
vNewEmId = self.txbNewEmId.get()
barray[0] = int(vOldEmId)
barray[5] = int(vNewEmId)
#crc校验
strInput= utils.crc16_append(barray)
print(barray)
n = self.mySerial.write(barray)
if(n0):
str = self.mySerial.readall()
self.lblInfo['text'] = 'success!'
# for s in str:
#print (hex(s))
else:
self.lblInfo['text'] = 'error!'
python3.4 编码有哪些Python3中python奇偶校验函数的编码问题前python奇偶校验函数,第一个段落对字节、ASCII与Unicode与UTF-8等进行基本介绍 , 如果不对这几种编码犯头晕,可直接跳过 。
ASCII与Unicode与UTF-8与GBK
首先从老大哥说起 。跟很多人一样,大学读了这么久,久仰ASCII编码python奇偶校验函数的大名 。要说这个老大哥,我们再先从字节说起 。一个字节包括八个比特位,每个比特位表示0或1,一个字节即可表示从00000000到11111111共2^8=256个数字 。一个ASCII编码使用一个字节(除去字节的最高位作为作奇偶校验位) , ASCII编码实际使用一个字节中的7个比特位来表示字符,共可表示2^7=128个字符 。比如那时写C语言的程序,就经常要背下ASCII编码中的01000001(即十进制的65)表示字符‘A’ , 01000001加上32之后的01100001(即十进制的97)表示字符‘a’ 。现在打开Python , 调用chr和ord函数,我们可以看到Python为我们对ASCII编码进行了转换 。
第一个00000000表示空字符,因此ASCII编码实际上只包括了
字母、标点符号、特殊符号等共127个字符 。因为ASCII是在美国出生的,对于由字母组成单词进而用单词表达的英文来说也是够了 。但是中国人、日本人、
韩国人等其python奇偶校验函数他语言的人不服了 。中文是一个字一个字,ASCII编码用上了浑身解数256个字符都不够用 。
因此后来出现了Unicode编码 。Unicode编码通常由两个字节组成,共表示256*256个字符,即所谓的UCS-2 。某些偏僻字还会用到四个字节,即所谓的UCS-4 。也就是说Unicode标准也还在发展 。但UCS-4出现的比较少,我们先记?。鹤钤嫉腁SCII编码使用一个字节编码,但由于语言差异字符众多,人们用上了两个字节,出现了统一的、囊括多国语言的Unicode编码 。
在Unicode中,原本ASCII中的127个字符只需在前面补一个全零的字节即可,比如前文谈到的字符‘a’:01100001,在Unicode中变成了00000000 01100001 。不久,美国人不开心了 , 吃上了世界民族之林的大锅饭,原本只需一个字节就能传输的英文现在变成两个字节 , 非常浪费存储空间和传输速度 。
人们再发挥聪明才智,于是出现了UTF-8编码 。因为针对的是空间浪费问题,因此这种UTF-8编码是可变长短的,从英文字母的一个字节,到中文的通常的三个字节,再到某些生僻字的六个字节 。解决了空间问题,UTF-8编码还有一个神奇的附加功能,那就是兼容了老大哥的ASCII编码 。一些老古董软件现在在UTF-8编码中可以继续工作 。
注意除了英文字母相同,汉字在Unicode编码和UTF-8编码中通常是不同的 。比如汉字的‘中’字在Unicode中是01001110
00101101,而在UTF-8编码中是11100100 10111000
10101101 。
我们祖国母亲自然也有自己的一套标准 。那就是GB2312和GBK 。当然现在挺少看到 。通常都是直接使用UTF-8 。记得我唯一一次看到GB编码的网页,是一个成人网站 。
Python3中的默认编码
Python3中默认是UTF-8,我们通过以下代码:
import sys
sys.getdefaultencoding()
可查看Python3的默认编码 。
Python3中的encode和decode
Python3中字符编码经常会使用到decode和encode函数 。特别是在抓取网页中 , 这两个函数用的熟练非常有好处 。我的理解 , encode的作用 , 使我们看到的直观的字符转换成计算机内的字节形式 。decode刚好相反 , 把字节形式的字符转换成我们看的懂的、直观的、“人模人样”的形式 。如下图 。
\x表示后面是十六进制,\xe4\xb8\xad即是二进制的11100100 10111000
10101101 。也就是说汉字‘中’encode成字节形式,是11100100 10111000
10101101 。同理,我们拿11100100
10111000 10101101也就是\xe4\xb8\xad来decode回来 , 就是汉字‘中’ 。完整的应该是b'\xe4\xb8\xad',在Python3中 , 以字节形式表示的字符串则必须加上前缀b,也就是写成上文的b'xxxx'形式 。
前文说的Python3的默认编码是UTF-8,所以我们可以看到,Python处理这些字符的时候是以UTF-8来处理的 。因此从上图可以看到,就算我们通过encode('utf-8')特意把字符encode为UTF-8编码,出来的结果还是相同:b'\xe4\xb8\xad' 。
明白了这一点,同时我们知道UTF-8兼容ASCII,我们可以猜想大学时经常背诵的‘A’对应ASCII中的65,在这里是不是也能正确的decode出来呢 。十进制的65转换成十六进制是41,我们尝试下:
b'\x41'.decode()
结果如下 。果然是字符‘A’
Python3中的编码转换
据说字符在计算机的内存中统一是以Unicode编码的 。只有在字符要被写进文件、存进硬盘或者从服务器发送至客户端(例如网页前端的代码)时会变成utf-8 。但其实我比较关心怎么把这些字符以Unicode的字节形式表现出来,露出它在内存中的庐山正面目的 。这里有个照妖镜:
xxxx.encode/decode('unicode-escape')
输出如下
b'\中'还是b'中,一个斜杠貌似没影响 。同时可以发现在shell窗口中,直接输'中'和输入b'中'.decode('unicode-escape')是相同的,都会打印出汉字‘中’,反而是'中'.decode('unicode-escape')会报错 。说明说明Python3不仅支持Unicode,而且一个‘\uxxxx’格式的Unicode字符可被辨识且被等价于str类型 。
如果我们知道一个Unicode字节码 , 怎么变成UTF-8的字节码呢 。懂了以上这些,现在我们就有思路了,先decode,再encode 。代码如下:
xxx.decode('unicode-escape').encode()
测试如下:
可以看到最后输出的UTF-8字节与上面的相同 。尝试成功 。所以其他的编码之间的转换 , 大概也是如此 。
最后的扩展
还记得刚刚那个ord吗 。时代变迁,老大哥ASCII被人合并,但ord还是有用武之地 。试试ord('中') , 输出结果是20013 。20013是什么呢 , 我们再试试hex(ord('中')),输出结果是'0x4e2d',也就是20013是我们在上文见面了无数次的x4e2d的十进制值 。这里说下hex , 是用来转换成十六进制的函数,学过单片机的人对hex肯定不会陌生 。
最后的扩展 , 在网上看到的他人的问题 。我们写下类似于'中'的字符 , Python3知道我们想表达什么 。但是让Python读取某个文件的时候出现了'中',是不是计算机就不认识它了呢python奇偶校验函数?后来下文有人给出了答案 。如下:
import codecs
file = codecs.open( "a.txt", "r", "unicode-escape" )
u = file.read()
print(u)
一文秒懂python正则表达式常用函数01 Re概览
Re模块是python的内置模块,提供了正则表达式在python中的所有用法,默认安装位置在python根目录下的Lib文件夹(如 ..\Python\Python37\Lib) 。主要提供了3大类字符串操作方法:
字符查找/匹配
字符替换
字符分割
由于是面向字符串类型的模块,就不得不提到字符串编码类型 。re模块中,模式串和搜索串既可以是 Unicode 字符串 (常用str类型),也可以是8位字节串 (bytes , 2位16进制数字,例如\xe5) , 但要求二者必须是同类型字符串 。
02 字符串查找/匹配
预编译:compile
在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型 , 以便后续快速匹配和复用
import repattern = re.compile(r'[a-z]{2,5}')type(pattern) #re.Pattern
此例创建了一个正则表达式式对象 (re.pattern),命名为pattern,用于匹配2-5位小写字母的模式串 。后续在使用其他正则表达式函数时,即可使用pattern进行方法调用 。
匹配:match
match函数用于从文本串的起始位置开始匹配,若匹配成功,则返回相应的匹配对象 , 此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None
import repattern = re.compile(r'[a-z]{2,5}')text1 = 'this is a re test'res = pattern.match(text1)print(res) #if res:print(res.group()) #thisprint(res.span()) #(0, 4)text2 = '是的, this is a re test'print(pattern.match(text2))#None
match函数还有一个变形函数fullmatch,当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象,否则返回None
搜索:search
match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法 , 与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串
import repattern = re.compile(r'\s[a-z]{2}')text1 = 'this is a re test'res = pattern.search(text1)print(res) #if res:print(res.group()) #isprint(res.span()) #(4, 7)pattern2 = re.compile(r'\s[a-z]{5}')text2 = '是的,this is a re test'print(pattern2.search(text2))#None
match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配,而后者从任意位置匹配,匹配成功则返回一个match对象 。
全搜索:findall/finditer
几乎是最常用的正则表达式函数,用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.findall(text1)print(res) #[' is', ' re', ' test']
findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表 。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型 , 其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.finditer(text1)for r in res:print(r.group())"""isretest"""
当匹配模式串较为简单或者仅需单词调用时 , 上述所有方法也可直接调用re类函数,而无需事先编译 。此时各方法的第一个参数为模式串 。
import repattern = re.compile(r'\d{2,5}')text = 'this is re test're.findall('[a-z] ', text) #['this', 'is', 're', 'test']03 字符串替换/分割
替换:sub/subn
当需要对文本串进行条件替换时 , 可调用re.sub实现 (当然也可先编译后再用调用实例方法),相应参数分别为模式串、替换格式、文本串,还可以通过增加缺省参数限定替换次数和匹配模式 。通过在模式串进行分组,可实现字符串的格式化替换(类似字符串的format方法) , 以实现特定任务 。
import retext = 'today is 2020-03-05'print(re.sub('-', '', text)) #'today is 20200305'print(re.sub('-', '', text, 1)) #'today is 202003-05'print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'
re.sub的一个变形方法是re.subn,区别是返回一个2元素的元组 , 其中第一个元素为替换结果,第二个为替换次数
import retext = 'today is 2020-03-05'print(re.subn('-', '', text)) #('today is 20200305', 2)
分割:split
还可以调用正则表达式实现字符串的特定分割,相当于.split()方法的一个加强版,实现特定模式的分割,返回一个切割后的结果列表
import retext = 'today is a re test, what do you mind?'print(re.split(',', text)) #['today is a re test', ' what do you mind?']04 总结
python中的re模块提供了正则表达式的常用方法 , 每种方法都包括类方法调用(如re.match)或模式串的实例调用(pattern.match)2种形式
常用的匹配函数:match/fullmatch
常用的搜索函数:search/findall/finditer
常用的替换函数:sub/subn
常用的切割函数:split
还有其他很多方法,但不是很常用,具体可参考官方文档
另外,python还有第三方正则表达式库regex可供选择
到此这篇关于一文秒懂python正则表达式常用函数的文章就介绍到这了,希望大家以后多多支持!
python 实现isodd()函数,参数为整数,判断是否为奇数?def isOdd(num):
return num % 2 == 1
elif type(n)==int:
m=0
for i in range(1,int(n) 1):
if n%i==0:
m=m 1
if n=1:
print('%s不是质数'%n)
else:
if m==2:
print('%s是质数'%n)
else:
print('%s不是质数'%n)
else:
print('%s必须是整数'%n)
扩展资料:
Python的函数支持递归、默认参数值、可变参数,但不支持函数重载 。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等 。可以使用内置函数help()打印出函数的使用帮助 。
参考资料来源:百度百科-Python
【python奇偶校验函数 python 奇偶校验】python奇偶校验函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 奇偶校验、python奇偶校验函数的信息别忘了在本站进行查找喔 。

    推荐阅读