一、运算符:
1、布尔值:true(真)、false(假)
name = "欧阳锋"
v1 = "欧阳" not in name #欧阳 不在 name里
v2 = "欧阳" in name #欧阳 在 name里
#返回输出结果
print(v1)
print(v2)
2、逻辑运算:and、or、not (与、或、非)
#从前到后一个一个算
a = 1
b = 'oyf'
#and :
c = a == 1 and b == 'oyf' # 真真为真
print(c)
c = a == 2 and b == 'oyf' # 真假为假
c = a == 2 and b == 'oy' # 假假为假
#or:
#True 碰到 or ---> True
#True 碰到 and ---> 继续向下判断
#False 碰到 or ---> 继续向下判断
#False 碰到 and ---> False
#补充:优先计算括号内的,如下:
c = a == 1 and (a != 1 and b == 'oy' or b == 'oyf')
print(c)
#not
aa = not a
print(aa)
# 因为a 大于 0 为真,aa = not a 的意思是,a不大于0,所有结果为False
3、成员运算: in 、not in
# in
name = "欧阳锋"
# "欧阳锋" 字符串
# "欧" 字符
# "欧阳" 子字符串(子序列
if "欧阳" in name:
print('yes')
else:
print('no')
# not in
name = "欧阳"
if "欧阳" not in name:
print('no')
else:
print('yes')
4、赋值运算:
count = 0
# 把运算符提到"="号前面为简便写法,后面为原始写法。
# count += 1 # count = count + 1
# count *= 1 # count = count * 1
# count /= 1 # count = count / 1
# count %= 1 # count = count % 1
# count //= 1 # count = count // 1
# count **= 1 # count = count ** 1
# 如:
while count < 3:
count += 1
print(count)
5、算数运算:
# + 、-、 *、 /、 %(取余)、//(商)、 **(次方)
a = 1 + 2
print(a)
6、比较运算:
#< 、>、 == 、!=(不等于)、 <=、 >=、 <>(也是不等于)
a = 1
b = 2
if a < b :
print('yes')
—归类—
为了方便记忆,可以给以上六种运算归为两类:
第一类:返回结果为值:
①、算数运算:
a = 10 * 10
②、赋值运算:
a += 1
第二类:返回结果为布尔值:
①、布尔值:
②、比较运算
a = 1 > 5
③、成员运算:
a = '欧阳' not in '欧阳峰'
④、逻辑运算:
a = 1 > 5 or 1 == 1
二、int(整型)方法:
1、int() 转换类型:
a = '123'
print(type(a)) #type()查看类型
b = int(a) #将字符串转换成int类型
print(type(b))
2、int (num,base=)进制转换
num = "a"
b = int(num,base= 16) #把num 调整为16进制。base= 调整为多少进制
print(b)
3、bit_length() 当前数字至少用多少位二进制表示
a = 8
r = a.bit_length() # 把a使用bit_length转换赋值给r
print(r)
—补充:
python2里面 表示整型(整数类型) 一定范围内是 int ,超过了这个范围就是 long(长整型)。
python3里面 所有的整型都是 int 类型。
在pycharm中,输入 int 按住control 左键单击 "int"就可以查看int方法
三、str(字符串)方法:
必懂:字符串在内存中一旦创建,就不可修改,如果要修改或拼接,会在内存中重新创建一个新的字符串。
1、必会方法
# 1、jion() 将字符串中每一个元素按照指定分隔符进行拼接
# 工作原理:内部会循环该字符串,来完成拼接操作
a = '西北玄天一片云,乌鸦落进了凤凰群'
b = ' ' #指定分隔符为空格
print(a) #输出原效果
print(b.join(a)) #输出改变后的效果
print('_'.join(a)) #另一种使用join方式
# 2、.split() #字符串分割,能设置分几次,但是拿不到分隔符。默认全部分割
test = 'kuihuabaodian'
print(test.split('a',2)) #指定以'a'作为分割符,分割两次
# 3、.find() #寻找子序列
test = 'wuDishiwudiwudi'
a = test.find('wu')
# 4、.strip() #默认去除左右两边空格 \t \n等,也可自定义字符去除,优先最多匹配。
test = '\tguojing\t'
print(test)
print(test.strip())
# 自定义参数去除
test1 = '123guojing123'
print(test1.strip('123'))
# 5、.upper() #把字符串转换为大写
test = 'Ouyangfeng'
print(test.upper)
# 6、.lower() #把字符串转换为小写
test = 'OuYangFeng'
print(test.lower())
# 7、replace() 替换
test = 'abcabcabcde'
print(test.replace('ab','36D')) #默认把字符串中所有 ab 替换成 36D
print(test.replace('ab','36D',2)) #传入的第三个参数为指定次数。替换2次。
# 8、获取字符串中某一个下标(第一位是从0开始
# 8.1、索引,下标
test = 'ouyangfeng'
v = test[2] #获取字符串中下标[2]的字符
print(v)
# 8.2、切片 字符串截取遵循“左闭右开”原则,也叫“包左不包右”
test = 'ouyangfeng'
v = test[0:2] # 取值范围是 大于等于0 至 小于2。 [:]取的是全部。
print(v)
# 8.3 len 获取字符串长度
# 在python2中如果是中文字符串,显示的是字节 每个中文占三个字节
test = 'ouyangfeng'
v = len(test) # 通过len()函数,获取test字符串长度
print(v)
#补充:
# len()也可以计算其他数据类型长度。在列表中,是以逗号来进行分割的。从1开始。
li = [11,22,33,44,'assa']
print(len(li)) # 输出结果为5
# 8.4、 for循环
# 语法:
# for [变量名] in [字符串]:
# [代码块]
# 8.5、range()函数
# 帮助创建连续数字,也可以设置步长,按照设置的间隔跳着取数。
test1 = range(20) # 也可以写range(0,20) 意思是取 【大于等于0 小于 20 的数】
test2 = range(0,20,2) #设置步长为 2,取的是0、2、4...18
for a in test1:
print(a,end='\t')
print()
for b in test2:
print(b,end='\t')
2、小练习:利用所学知识,使用input定义一个字符串,将该字符串中的下标与字符一一对应打印出来。
test = input('>>>:')
for a in range(len(test)): #使用len获取test字符长度,传入range()函数
print('下标:{} 对应的字符是:{}'.format(a,test[a])) #使用format拼接字符串,用切片方式 取出下标对应的字符。
练习题答案
3、str其他方法详解与示例:
# 1、.capitalize() 首字母大写
# test = 'wuDishiwudiwudi'
# print(test.capitalize())
# 2、.caseflod()、.lower() 把字符串中所有的字母变小写。
# caseflod()更牛逼,应用场景丰富,能处理很多未知的大小写对应
# test = 'wuDishiwudiwudi'
# print(test.casefold())
# print(test.lower())
# 3、.center(self,width,fillchar=None) self(可以忽略)、 fillchar=None (默认是None,可带可不带)
# 查看方法时如遇到 'width' 必须要往里面传一个值
# 设置宽度,并将字符串居中
# 20 代表 总填充长度占20个字符
# '*' 使用 * 填充空白处,默认用空白填充,只能传进一个字符。
# test = 'wuDishiwudiwudi'
# print(test.center(20))
# print(test.center(20,'*'))
# 补充:
# .ljust() 字符串在左侧,把定义的内容填充到右侧,默认为空格
# .rjust() 字符串在右侧,把定义的内容填充到左侧,默认为空格
# .zfill() 不能自定义填充内容, 只填充0 没啥用
# print(test.ljust(20,'*')) #字符串从开头填充'*'补全字符串至20位(使用开头结尾方便理解)
# print(test.rjust(20,'*')) #字符串从结尾填充'*'补全字符串至20位
# print(test.zfill(20)) #字符串从开头填充'0'补全字符串至20位
# 4、.count() 统计传参在字符串中出现的次数
# t = 'guojinghuangrongouyangfeng'
# a = t.count('g') #'gr'支持子序列
# print(a)
# b = t.count('g',3,15) #查找'g'在字符串中出现的次数,从第3位开始,第15位结束(第一位从0开始)
# print(b)
# 5、encode()、decode() 非常重要,先略过。
# 6、.endswith() 以什么结尾的bool值判断;
# .startwith()以什么开始的bool值判断;
# 也可传入开始位置 结束位置参数
# test = 'wuDishiwudiwudi'
# print(test.endswith('a'))
# print(test.endswith('w'))
# 7、.find() 寻找子序列
# 从开始往后找,找到一个后,获取其下标()
# test = 'wuDishiwudiwudi'
# a = test.find('wu')
# print(a)
# # 可指定开区间闭区间,开始位置>=3 结束位置<9,如下
# b = test.find('wu',3,9)
# print(b)
# 补充:.index() 方法功能与 .find()方法类似,find为常用。
# 区别:index找不到会报错,find找不到会反回-1。
# 以下为对比:
# c = test.index('wu',3,9)
# print(c)
# d = test.index('sb',3,9)
# print(d)
# 8、.format()格式化字符串,将一个字符串的占位符替换为指定的值
# 以下为几种拼接方式:
# a = 'i am {} , {} years old!' #也可填入{0}{1}
# aa = 'i am {name} , {age} years old!'
# print(a)
# print(a.format('欧阳锋',69))
# print(aa.format(name='欧阳锋',age=69))
# 补充 .format_map() 传的是字典类型
# a = 'i am {name} , {age} years old!'
# b = a.format(name='欧阳锋',age=69)
# print(b)
# c = a.format_map({'name':'西毒欧阳锋','age':69}) #'key' 对应 '值'
# print(c)
# 9、.isalnum()判断字符串中是否只包含字母和数字,返回bool值
# a = 'abcds982_)+'
# b = 'abcds'
# print(a.isalnum()) #False
# print(b.isalnum()) #True
# 补充:.isalpha() 判断字符串中是否只包含字母。返回bool值
# a = 'abcds982'
# b = 'abcds欧阳锋'
# print(a.isalpha()) #False
# print(b.isalpha()) #True
# 10、.expandtabs()断句,如果有20个,就是20个一组
# 目前就我理解为的意思就是类似制作表格的作用
# 让\t前后 满足后面传参的位数。空格补齐。
# s = 'username\tpassword\tmail\nouyangfeng\t1234\touyangfeng@qq.com'
# print(s.expandtabs(20))
# 11、isdecimal() 、 isdigit() 、isnumeric()判断是否是数字
# 输出结果返回bool值
# .isdecimal() 十进制的小数、最常用
# .isdigit() 特殊@符号 可互相配合,定通过‘一、①、1’返回的值义文件层次
# .isnumeric 支持中文 识别范围更牛逼
# num1 = '123'
# num2 = '②'
# num3 = '二'
# #num1
# print(num1.isdecimal())
# print(num1.isdigit())
# print(num1.isnumeric())
# print() #换行作用,方便对比
# #num2
# print(num2.isdecimal())
# print(num2.isdigit())
# print(num2.isnumeric())
# print()
# #num3
# print(num3.isdecimal())
# print(num3.isdigit())
# print(num3.isnumeric())
# 12、.swapcase() 把字符串中小写转换为大写,大写转换为小写。
# test='xIdUOyangFeng'
# print(test.swapcase())
# 13、.isidentifier() 标识符,数字不能作为字符串开头。返回bool值
# test1='123'
# test2='class33'
# print(test1.isidentifier())
# print(test2.isidentifier())
# 14、.isprintable() 识别字符串打印后,是否存在不可显示的字符。返回bool值
# 个人理解:类似\t(制表符) \n(换行符)这种,输出后不显示的,就会返回false
# test1 = 'this is test1'
# test2 = '\tthis \n\tis \n\ttest2'
# print(test1.isprintable())
# print(test2.isprintable())
# 15、.isspace() 判断字符串中是否都是空格,返回bool值
# \t 也会被识别为True
# test1 = 'asdsa'
# test2 = ' '
# print(test1.isspace())
# print(test2.isspace())
# 16、.title() 把字符串转换为首字母大写的标题
# .istitle()判断是否为首字母大写的标题
# test1 = 'this is Python'
# v = test1.title() #把test1转换为title
# print(test1.istitle()) #输出test1 判断结果
# print(v.istitle(),v) #输出test1转换后的判断结果与转换后的效果。
# 17、.lower() 把字符串转换为小写
# .islower() 判断字符串那是否为小写
# 可以作用于验证码不区分大小写比对。
# test = 'Ouyangfeng'
# print(test.lower())
# print(test.islower())
# 补充:
# .upper() 把字符串转换为大写
# .isuper() 判断字符串那是否为大写
# print(test.upper())
# print(test.isupper())
# 18、.strip() #默认去除左右空格 \t \n,也可自定义字符去除,优先最多匹配。
# .lstrip() #默认去除左空格
# .rstrip() #默认去除右空格
# 默认去除
# test = '\tguojing\t'
# print(test)
# print(test.strip())
# print(test.lstrip())
# print(test.rstrip())
#自定义参数去除
# test1 = '123guojing123'
# print(test1)
# print(test1.strip('123'))
# print(test1.lstrip('123'))
# print(test1.rstrip('123'))
# 19、.maketrans() 建立对应关系,配合translate()使用(没啥用
# test = '口令:天王盖地虎。哇哈哈'
# m = str.maketrans('天王盖地虎','宝塔镇河妖') # 建立前后对应关系
# print(test)
# print(test.translate(m)) #进行替换,输出效果
# 20、.partiton() #字符串分割,只能分割一次。以后可能会用到。
# .rpartiton() #从右往左匹配
# .split() #字符串分割,能设置分几次,但是拿不到分隔符。默认全部分割
# .rsplit() #从右往左匹配
# 正则表达式,也可以进行分割,可以进行设置,是否想要分割的元素。
# 是这两个方法的合集
# test = 'kuihuabaodian'
# print(test.partition('a'))
# print(test.split('a',2)) #指定以'a'作为分割符,分割两次
# 补充:
# .splitlines() 自动识别换行符,根据换行符分割。
# 也可跟参数:True、False,默认为False
# test = '葵花宝典\n九阳真经\n乾坤大挪移\n降龙十八掌'
# print(test.splitlines())
# print(test.splitlines(True)) # True为保留换行符
# 21、.startswith() 判断该字符串以什么作为开始,返回bool值
# .endswith() 判断该字符串以什么作为结束
# test = 'xiduouyangfeng'
# print(test.startswith('xidu'))
# print(test.endswith('xd'))
str其他方法