python学习篇之【运算符&基本数据类型"int"与"str"方法】
一、运算符:
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'))

浙公网安备 33010602011771号