Python基础 day03
运算符:
not , and , or
语法:
not x
作用:
将X进行布尔取反,如bool(x)为True,则返回False,否则为True
例:
not True #返回False
not False #返回True
money = 100
is money >= 100
pay = money - 20
else:
pay = money - 20
print(pay)
布尔 与 操作 and :
语法:
x and y
注:
x、y 代表表达式
作用:
当x 的布尔值为True时,返回y,否则返回x
例如:
>>> True and False
True
>>> True and True
True
>>> Flase and True
Flase
>>> Flase and Flase
Flase
布尔 或 操作 or :
语法:
x or y
作用:
当x为True时,返回x,否则返回y
>>> True and False
True
>>> True and True
True
>>> Flase and True
True
>>> Flase and Flase
Flase
score = input('请输入学生成绩:') or '0'
score = int(score)
score = input() or input() or input() # 这个就是按顺序 遇到True的时候输出
比如:
score = input('请输入你的成绩') or input('你忘记输入成绩了哦') or input('看来你真的不打算输入')
正负号运算符:
正号(+) 负号(-)
一元运算符
语法:
+ 表达式
- 表达式
示例:
a = 5
b = -a #b = -5
c = +a #c = 5
c = (2-3j)
c2 = -c #(-2+3j)
位运算符
bit(位)
byte(字节,含有8个位) 2**8
运算符:
& 位与
| 位或
^ 位异或
<< 左移
>> 右移
~ 按位求反
位与:(通常整型数字运算,不支持浮点数运算)
语法:
表达式x & 表达式y
作用:
按位操作,两个对应的位为1 ,则结果为1,否则结果为0
例:
10 & 12 # 返回 8
bin(x) 函数: (bin 为 binary 前三个字符)
可以将x转换为二进制字符串
位或:
语法:
表达式: x | y
作用: 按位操作,两个对应的位,只要有一个为1,则结果为1,否则结果为0
10 | 12 # 结果为14
# 数据压缩和加密需要用位操作,不知道算法就无法解密
位异或: ^
语法:
表达式: x ^ y
作用: 按位操作,两个对应的位不同,结果为1,否则结果为0
左移运算:左移多少位实际为乘以2的几次方
语法:
表达式 x << 整数表达式y
作用:
将x 的二进制值按位向左移动y位,低位补 0
示例:
0b1010 << 1 #20
0b1010 << 2 #40
右移运算:右移多少位实际为地板除以2的y的次方
语法:
表达式 x >> 整数表达式y
作用:
将x的二进制值按位向右移动y位,低位溢出丢弃
示例:
0b1010 >> 1 #5 0b101
0b1010 >> 2 #2 0b10
0b1010 >> 3 #1 0b1
0b1010 >> 4 #0 0b
按位求反: ~ (1按键的左上角)1变成0 0变成1
语法:
~ 表达式
正数隐藏为0 求反隐藏符号变为1 则原来正数变为负数
~ 0b1010(0b01010)
符号位取反0b(1)0101
示例:
~ 0 = -1(补码形式)
-1 = 0
练习:输入一个正整数存于x内,用移位方式求x的五倍是多少?
(注:不允许使用乘号)
字符串: str
作用:
用来记录文本信息
字符串表示方法:
在非注释中凡是用银行括起来的部分都是字符串:
' ' 单引号
" " 双引号
''' ''' 三单引号
""" """三双引号
空字符串字面值的表示方法:
' '
" "
''' '''
""" """
空字符串的布尔测试值为False
非空字符串字面值的表示方法:
'hello'
"hello"
'''hello'''
"""hello"""
单引号和双引号的区别:
单引号内可以包含双引号(双引号不算结束符)
反之相同
示例:
print('I'am a teacher')
print("I'am a teacher")
三引号的字符串:
作用:
三引号串的换行符会自动转换为换行符 \n
三引号内可以包含单引号和双引号
示例:
hello
welcome to beijing!
i like python
print("hello\nwelcome to beijing\ni like python")
print("""hello!
weilcome to beijing!
i like python!""")
隐式字符串字面值的拼接:
>>> "I'am" 'a teacher'
>>> "I'am a teacher"
用转义序列代表特殊字符:
字符串中\ 后跟一些字符代表特殊含义:
例:反斜杠字符
\' 代表单个单引号
\" 代表单个双引号
\n 代表换行
\\ 一个反斜杠
\a 响铃
\r 返回光标至行首
\t 水平制表符 通常为4-8个空格符
\v 垂直制表符
\f 换页
\b 倒退
\0 空字符,字符值为0
\0oo 八进制表示的字符
\xXX 十六进制表示的字符
\uXXXX Unicode 16 的十六进制字符
\uxxxxxxxx Unicode 32 的十六进制字符
计算机为每个字符字母文字编码,输入相关信息,计算机找到后再输出
ASCII编码:
$ man ascii
任何字符都有编码标记,输出编码也能打印出任何字符
ascii 里边一共有128个编码 0-127
常用的ascii 编码表
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
Unicode
'\x41' 十六进制表示的字符 A
'\u0041' Unicode16(2个bit表示) 十六进制表示的字符A
'\U00000041' Unicode32(4个bit表示) 十六进制表示的字符A
len(x) 函数,求字符个数:
len(s)
练习:'1234abcd' 有几个字符
'\5\'4"'
'\"A\x34\056'
'\a\bc\td\n'
raw 字符串(原始字符串,未经过任何修饰的)
格式:
r"字符串内容"
r'字符串内容'
r'''字符串内容'''
r"""字符串内容"""
作用:
让转义字符\无效
字符串的运算:
+ += * *=
+ 加号运算,用于拼接字符串
例:
x = 'abcd' + 'efg'
print(x) # abcdefg
y = '123'
z = x + y #abcdefg123
+= 用原字符串与右侧字符串拼接后生成新的字符串
新字符串绑定原字符串上
例:
x = 'abcd'
y = 'efg'
x += y # 等同于 x = x + y
* 运算符代表生成重复的字符串
例: "a" * 5
print(a) # "aaaaa" 乘几就是多少个前边字符串
*= 生成重复的字符串,并改变原变量的绑定关系
例:
x = 'ABC'
x *= 3 # x = 'ABCABCABC'
字符串的比较运算:
< <= > >= == !=
示例:
"ABC" == '''ABC''' # True 长度内容相同,那么他就是相同的
'ABC' == 'ABD' # False
'ABC' > 'ABB' # True 因为字母C的编码值大
'ABC' > '123' # True
'ADC' < 'ABD' # True D已经比B大后边不在判断
'AB' < 'AB0' # True 后边字符长,所以大
'ABCD' == 'DCBA' # False 顺序不同
'abc' == 'ABC' # 不同的字符编码不同
in / not in 运算符:
作用:
in 用于序列 ,字典,集合中,用于判断某个值是否存在于对象中(通常是容器类对象)
not in 与 in 的返回值相反
语法格式:
值 in 字符串
例:
x = 'welcome to tarena!'
if 'to' in x:
print('to 存在于x中')
python 运算符优先级:
(自上而下,由高到低)
** 指数
-,+,- 按位反转(取反),一元正号,一元负号
*,/,//,%
+,-
>> , << 右移和左移
& 位与
^ 位异或
| 位或
< , <= , > , >= , == ,!= ,is ,is not ,in ,not in
not bool非运算(取非)
and
or
if - else 条件表达式
字符串的基本操作:
字符串的索引操作:
索引 (用编号来表示数据的方式) index:
python 字符串是不可以改变的序列
语法:
字符串[整数值]
说明:
python 序列都可以用索引(index)来访问序列中的内容
序列的正向索引是从0开始的,第二个索引为1,最后为len(s)-1
序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)
例:
s = 'ABCDE'
print(s[2]) # C
切片 slice
从字符串序列中,取出相应元素,从新组成一个字符串序列
语法:
字符串[(开始索引):(结束索引)(:(步长))]
注:()括起部分代表可省略
说明:
1.开始索引是切片切下的位置,0代表第一个元素,1代表第二个元素, ......,-1代表最后一个
2.结束索引是切片的终止点(但不包含终止点)(无下限可切到无限大,但字符串一共就那么多,所以到末尾)
3.步长是切片每次获取完当前元素后移动的方向和偏移量
3.1没有步长,相当于取值完成后向右移动一个位置(默认为1)
3.2当步长为正数时,取正向切片
步长默认为1,开始索引默认为0,结束索引默认为len(s)
步长代表下一次索引取值的增长值
3.3当步长为负整数时,取反向切片
反向切片时,默认的起始位置为最后一个元素,终止位置是第一个元素的前一个元素
例:
s = 'ABCDE'
a = s[:] # a -->'ABCDE'没有开始结束默认全部
a = s[2:] # a -->'CDE' 从第三个开始没有结束默认结尾
a = s[:2] # a -->'AB'
a = s[2:4] # a -->'CD'
a = s[1:1] # a -->''
a = s[4:2] # a -->'' 从左到右,优先到了2,所以停止为空
a = s[0:5:2] # a -->'ACE'步长变为2,就是一次跳一个,第二个数值,1.3.5
a = s[::-1] # a -->'EDCBA' 步长是负数即为正数相反,反向切
注:索引的正负就是字符位置的标示,正负都是一个位置,而步长的正负则为切片方向的正反,跟字符本身无关
练习:
1.输入一个字符串,打印这个字符串的第一个字符,中间的字符及最后一个字符,如果输入的字符数为偶数,则中间字符输出为'|'
2.输入任意一个字符串,判断这个字符串是否为回文
回文示例,上海自来水来自海上,中心对称的文字为回文
3.用字符串*运算符打印矩形方框,要求输入一个整数,此整数代表此矩形的宽度