布尔运算:
运算符:
not and or
布尔 非 操作 not
语法:
not x
作用:
对x 进行布尔取非, 如果bool(x) 为 True,则返回False,
示例:
not True # False
not False # True
not 100 # ???
x = int(input("请输入一个整数:"))
if not (x % 2 == 1):
print("偶数")
else:
print("奇数")
布尔 与 操作 and
语法:
x and y
注: x , y 代表表达式
作用:
优先返回假值False对象
当 x的布尔值为 False时,返回x, 否则返回y
示例:
True and True # 返回第二个True
True and False # 返回False
False and True # 返回False
False and False # 返回False(第一个False)
score = int(input("请输入成绩")) # 80
if score >= 0 and score <= 100:
print("成绩合法")
x = 100 and 200 # 请问x 得多少?
x = 0.0 and 3.14 # x = 0.0
x = 100 and 0 # x = 0
x = 0.0 and False # x = 0.0
布尔 或 操作 or
语法:
x or y
作用:
优先返回真值对象
当x为True时返回x,
示例:
True or True # 返回True(第一个True)
True or False # 返回True
False or True # 返回True
False or False # 返回False(第二个False)
x = 100
y = 200
# z = x or y
if x:
z = x
else:
z = y
思考:
score = int(input("请输入学生成绩") or '0')
请问这是什么意思?
正负号运算符:
+ (正号) - (负号)
注: 一元运算符
语法:
+ 表达式
- 表达式
示例:
c = (2-3j)
c2 = -c
位运算符:
& 位与
| 位或
^ 位异或
<< 左移
>> 右移
~ 位取反
术语:
bit (位)
byte(字节,含有8个位)
请问,同学们家里10M宽带是指什么
10 * 2**20 # 10M bit/s
1K = 2**10
1M = 2**20
1G = 2**30
1T = 2**40
...
位与运算
&
格式:
表达式x & 表达式y
作用:
按位操作,都为1,则为1,
示例:
0b1010 & 0b1100 # 等同于 10 & 12
a = 0b1010
b = 0b1100
c = a & b # c = 8
位或运算
|
格式:
表达式x | 表达式y
作用:
按位操作,只要有一个为1,则为1
都为0时才为0
示例:
a = 0b1010 # 10
b = 0b1100 # 12
c = a | b # c = 0b1110 得14
bin(x) 函数,将x转换为二进制的字符串
bin为 binary 的前三个字符
位异或 ^ (在键盘的6上面)
格式:
表达式x ^ 表达式y
作用:
按位操作,位不同,结果为1
相同,结果为0
示例:
c = 0b1010 ^ 0b1100 # c = 0b0110
左移运算符 <<
格式:
表达式x << 整数表达式y
作用:
将 x的二进制值按位向左移动y位,低位补0
示例:
0b0110 # 6
0b0110 << 1 # 0b1100 --> 12
0b0110 << 2 # 0b11000 --> 24
0b0110 << 3 # 0b110000 --> 48
x << y # 等同于 x * 2 ** y
右移运算符
>>
格式
表达式x >> 整数表达式y
作用:
将 x的二进制值按位向右移动y位, 低位溢出丢弃
示例:
0b0110 # 6
0b0110 >> 1 # 0b0011 (3)
0b0110 >> 2 # 0b0001 (1)
0b0110 >> 3 # 0b0000 (0)
按位求反
格式:
~ 表达式
说明:
-1 取反 0
0 取返 -1
负数的表示方法为补码
字符串 str
作用:
用来记录文本信息
表示方法:
在非注释中,凡是以引号括起来的部分都是字符串
' 单引号
" 双引号
''' 三单引号
""" 三双引号
空字符串的表示方法:
''
""
''''''
""""""
注: 空字符串的布尔测试值bool(x) 为False
非空字符串的表示方法:
'hello'
"hello"
'''hello'''
"""hello"""
单引号和双引号的区别:
单引号内的双引号不算结束符
双引号内的单引号不算结束符
示例:
print("I'm a teacher")
print('I am a "man"')
'''I'm a teacher, my name is "jachou"'''
三引号的字符串
''',""" 开头和结尾的字符串
作用:
1. 三引号内可以包含单引号和双引号
2. 三引号字符串中的换行会自动转换为换行符(\n)
示例:
welcome to beijing
I like python!
I am studing.
print("welcome to beijing\nI like python!\nI am studing.")
# 以上写法可以写为如下:
print('''welcome to beijing
I like python!
I am studing.''')
隐式字符串字面值拼接:
>>> "I'm a superman 'I am "saiyaren"'
'I\'m a student i am "aliverquenn"'
思考:
当一个字符串内有' " """ ''' 这个字符串怎么表示
用转义序列代表特殊字符
字符串中,用反斜杠(\) 后跟一些字符代表特殊的一个字符
字符串转义字符表:
转义格式 含义
\' 代表单个单引号
\" 代表单个双引号
\n 代表换行符
\\ 一个反斜杠
\t 水平制表符(tab)
\v 垂直制表符
\r 返回光标至行首
\a 响铃
\f 换页
\b 倒退(backspace)
\0 空字符,字符值为零
\xXX XX为两位十六进制表示的字符
\uXXXX Unicode 16的十六进制表示的字符
\UXXXXXXXX Unicode32 的十六进制表示的字符
ASCII编码:
ASCII字符表:
$ man ascii<回车>
Unicode
'A'
'\x41' ASCII编码
'\u0041' UNICODE-16
'\U00000041' UNICODE-32
Python3 的解释器的内部都是用UNICODE-16存储字符串的
len(s) 返回一个字符串的字符数
练习:
以下字符串占几个字符?
"1234abcd"
'\"A\x34\uABCDEFG' 7个
'\a\bc\td\n' 6个?
raw 字符串(原始字符串)
字面值格式:
r"字符串内容"
r'字符串内容'
r'''字符串内容'''
r"""字符串内容"""
作用:
让转义符号 \ 无效
示例:
s = 'C:\newfile\test.py'
字符串的运算:
+ += * *=
+ 加号运算符用于拼接字符串
例:
s1 = "ABC"
s2 = "DEF"
s3 = s1 + s2 # s3 = "ABCDEF"
+= 运算符用于原字符串与右侧字符串拼接,生成新字符串并改变原变量的绑定关系
s1 = "ABC"
s2 = "DEF"
s1 += s2 # s1 = "ABCDEF", s2 不变
* 运算符生用生成重复的字符串
s = "ABC" * 3 # s = "ABCABCABC"
s = 2 * "abc" # s = "abcabc"
*= 生成重复的字符串并改变原变量的绑定关系
x = "123"
x *= 4
print(x) # 123123123123
字符串的比较运算
< <= > >= == !=
示例:
"ABC" == "ABC" # True
"ABC" != "CBA" # True
"abc" == 'abc' # True
"ABC" < 'ABD' # True (依靠字符编码值)
"ADC" > 'ABC' # True
'ABC' < 'AB' # False?
"ABC" < '123' # False
'ABC' < 'abc' # True
常用ASCII编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
in / not in 运算符
作用:
用于序列,字典,集合中,用于判断某个值是否存在于对象中
说明:
not in 与 in 的返回值相反
格式:
对象 in 序列
例:
s = "ABCDDCBA"
'A' in s # True
'1' in s # False
"ABC" in s # True
"DDC" in s # True
'DAD' in s # False
"DAD" not in s # True
Python 运算符的优先级:
** 指数(幂运算符)
~ + - 按位反转,正号,负号
* / % //
+, - 加法, 减法
<< , >> 左移,右移
& 位与
^ 位异或
| 位或
< <= > >= == != is, is not, in, not in
not 布尔非
and 布尔与
or 布尔或
if - else 条件表达式