2017/9/27
布尔运算,位运算,字符串 str,转义序列,ASCII编码,len函数,隐式字符串拼接,in & not in 运算符
===============================================================
布尔运算:
运算符:not and or
not:逻辑取反
语法:not 表达式
实例1:
if not 0<=score<=100:
print("您输入的不对")
实例2:
text = int(input("enter a score:"))
if text: ######实际:if bool(text),if实际是对布尔返回值的判断
print("you enter:",text)
else:
print("you enter nothing!")
实例3记忆:
not True #False
not 100 #False
not 1+2j #False
not "False" #False!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
not False #True
not 0.0 #True
not 0j #True
not '' #True
not None #True
and运算符:优先返回值为假(False)的对象
总结:有假返回假,没有假返回最后(写程序时既可以按照现实的逻辑理解,也可以按照这个总结背诵简单理解)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
语法:
表达式1 and 表达式2
实例:
0 and 100 #返回0
100 amd 200 #返回200
100 and 0 #返回0
真值表达式:
bool(表达式1) and bool(表达式2) 结果的布尔测试值
F F F
F T F
T T T
T F F
and真值表(python特别版):
x and y
bool(x) 返回值
T y
F x
实例:
score = int(input("please enter a score number:"))
if score >= 0 and score <= 100:
print("enter reasonably.")
or运算符:优先返回值为真(True)的对象
总结:有真返回真,没有真返回最后(写程序时既可以按照现实的逻辑理解,也可以按照这个总结背诵简单理解)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
语法:
表达式1 or 表达式2
实例:
0 and 100 #返回100
100 amd 200 #返回100
100 and 0 #返回100
0 and 0.0 #返回0.0
0.0 and 0 #返回0
实例:
score = int(input("please enter a score:"))
if score < 0 or score > 100:
print("enter wrong!")
else:
print("enter score:",score)
实例:
score = int(input("please enter a score:")) or "0"
if score < 0 or score > 100:
print("enter wrong!")
else:
print("enter score:",score)
===============================================================
正负号运算符:
+(正号) -(负号)
语法:
+ 表达式
- 表达式
说明:一元运算符(左侧没有参数,右侧有参数,例如1+2为二元)
===============================================================
位运算:
运算符:
& 位与
| 位或
^ 位异或
<< 左移
>> 右移
~ 取反(二进制开头的位:1表示负数,0表示正数,仅在取反的过程中才会用到)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hex(x)函数:将x转换为十六进制的字符串
bin(x)函数:将x转换为二进制(binary)的字符串
& 按位与:
语法:表达式1 & 表达式2:
作用:按位操作,两个对应的位都为1,则结果为1;两个对应的位只要有一个位为0,则结果为0.
| 按位或:
语法:表达式1 | 表达式2:
作用:按位操作,两个对应的位都为0,则结果为0;两个对应的位只要有一个位为1,则结果为1.
^ 按位异或:
语法:表达式1 & 表达式2:
作用:按位操作,两个对应的位不同,则结果为1;两个对应的位相同,则结果为0.
<< 左移运算:
语法:表达式x << 整数表达式y
作用:将x的二进制值,按位向左移动y位,低位补0.
实例:6 << 2 = 24 #6*2**2 = 24
6 << 3 = 48 #6*2**3 = 48
>> 右移运算(手算时可将二进制数的末尾位丢弃,重新根据二进制值计算):
语法:表达式x >> 整数表达式y
作用:将x的二进制值,按位向右移动y位,低位溢出丢弃.
实例:6 >> 1 = 3
6 >> 2 = 1
6 >> 3 = 0
6 >> 4 = 0
~ 按位求反
语法:~表达式
作用:将数据的二进制相应位由0变1,由1变0(取反).
实例:
(1)~6=-7,0110,取反,1001,取反(正负不变),0110,加1,0111,为-7 (实际就是有效位取反加1,再加上符号)
(2)~-5=4,1101,0010,0011,0100,为4
===============================================================
字符串 str(string):记录文本信息(字符信息)
表示方法
单引号''
双引号""
三单引号'''
三单双引号"""
凡是用上述字符开头,相同字符结尾的表达式都为字符串
非空字符串的表达方式:
'hello'
"hello"
'''hello'''
"""hello"""
空字符串的表达方式:
''
""
''''''
""""""
空字符串的布尔测试值bool(x)为False!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
实例:
s = ''
if s:
print("非空")
else:
print("空")
>>>空
单引号和双引号的区别(如果文档中包括了单引号或者双引号):
单引号内可以包含双引号
双引号内可以包含单引号
实例:
s = "I'm a teacher!"
s2 = 'My name is "Xiaoyuxiu"'
三引号字符串:
以"""或'''开头的字符串,以"""或'''结尾的字符串
作用:
可以包含单引号和双引号;
三引号字符串中的换行会自动转换为换行符 \n
实例1:
s = """I'm a teacher!\nMy name is "Xiaoyu""""(有bug)
s = """I'm a teacher!\nMy name is "Xiaoyu""""(修改添加了空格)
实例2:
s = '''I'm a teacher! #这里使用了回车,程序打印时会自动换行
My name is "Xiaoyuxiu"'''
===============================================================
用转义序列代表特殊字符:
字符串常量中用字符反斜杠\后跟一些字符代表特殊的含义
实例:
\' 代表单个单引号(这是计算机认识的语言,如果一段文字中需要添加单引号,就需要这样的设置。防止和其他引号一起连用被计算机误认为用于标记一段字符串)
\" 代表单个双引号(防止被计算机误认为去标记字符串)
\n 代表换行
实例:
a'b"c'd"e"f":如果想要表达这样一串字符,需要写成一下的形式,否则计算机不识别:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
s = 'a\'b"c\'d"e"f"'
字符串反斜杠字符串(部分是防止计算机误认为表示字符串的符号):
\' 单引号(')
\" 双引号(")
\n 换行
\a 响铃
\\ 一个反斜框(\) (首先检测有没有存在转义功能的转义字符,如果存在,则将其转义符号修改为反斜杠符号,不再具备原来的转义功能,变成真正的“图片字符”)
\r 返回光标至行首 (接上,我就是想写斜杠,而我又担心他会将后面的字符转义)
\f 换页
\t 水平制表符 (出现几个水平空格,其len()为1)
\v 垂直制表符
\b 倒退光标
\0 空字符(字符的值为0)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!什么都没有
\0oo 两位八进制表示的字符
\xXX 两位十六进制表示的字符
\uXXXX Unicode 16的十六进制字符(XX第一个字节,XX第二个字节)
\UXXXXXXXX Unicode 32的十六进制字符
实例:
print("ADCD\ra") >>> aABCD
===============================================================
ASCII编码(每一个字符都对应一个编码号码):
调出ascii表:man ascii
实例:
65 - A (这里使用的是十进制)
97 - a
print('abcd') >>>abc
print('\x61\x62\x63\x64') >>>abcd (这里用十六进制表示,共4个字节)
print('\u0061\u0062') >>>ab Unicode16编码
print('\U000000061\U00000062') >>>ab Unicode32编码
print('\u4e2d\u6587') >>>中文
常用的ascii编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
Unicode:
由于美国ascii编码只有0~127个编码,实际2**7=128
1字节可表示0~2**8-1 (0~255)
2字节可表示0~2**16-1 (0~65535)
python3中使用Unicode作用内部的编码
Unicode 16 (两字节表示):0~2**16-1(0~65535)
'A' 0x00A1
Unicode 32 (四字节表示):0~2**32-1(约40亿)
===============================================================
len函数:
len(s):返回字符串中字符的个数('a'是一个字符,'中'是一个字符)
raw字符串(原始字符串)
格式:
r'字符串内容'
r"字符串内容"
r'''字符串内容'''
r"""字符串内容"""
作用:
让转义符号\无效
实例1:
path = 'C:\newfile\test.py'
print(path)
print(len(path))
>>C:
ewfile est.py
16
实例2:
path = r'C:\newfile\test.py'
print(path)
print(len(path))
>>C:\newfile\test.py
18
===============================================================
隐式字符串拼接:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
x = "I'm" 'a"teacher".' """hello!"""
>>>I'ma"teacher".hello!
字符串的运算:
+ += * *= >>= <<= == !=
+加号运算符:拼接字符串
实例:
x = "abcd"
y = "efg"
z = x + y
>>>abcdefg
+=:原字符串与右侧字符串拼接生成新的字符串关联到原变量
实例:
x = "abcd"
y = "efg"
x += y #x = x + y
*:生成重复的字符串
格式:字符串 * 整型表达式
实例:x = "abcd" * 3
*=:生成重复是字符串并改变变量的绑定(关联)关系
实例:
x = "123"
x *= 3
print(x)
>>>123123123
字符串的比较(从左向右比,只要分出胜负就结束比较):!!!!!!!!!!!!
>>= <<= == !=
实例:
'A' < 'B' #True 0x41<0x42
'ABC' < 'ABB' #False 按位比,前面AB相同,只好再比较C
'ADC' < 'ABC' #False
'AD' < 'ABC' #False
'AB' < 'ABC' #True
'abc' == 'ABC' #False
'abcd' != 'dsff' #True
===============================================================
in & not in 运算符
作用:
in 用于序列,字典,集合中,用于判断某个值是否存在于对象中(in是二元运算符)
not in的返回值与in相反
实例:
x = "welcome to tarena!"
if 'to' in x:
print("'to'在字符串中")
>>>'to'在字符串中
python运算符的优先级:
运算符 描述
** 指数(最高优先级)
~+- 位反转,一元加号(正号)一元减号(负号)取反,正数,负数
*/ // % 乘,除,地板除,求余
+- 加,减
<<>> 左移,右移
& | 位与,位或
^ 位异或
<<= >>= 小于,小于等于,大于,大于等于
== != 等于,不等于
= %= /= //= -= += *= **= 复合赋值运算符
is,is not 身份运算符 #is,is not表示判断两个对象是否绑定在同一个对象上(绑定关系,而非赋值关系)
in,not in 成员运算符
not,or,and 逻辑运算符