Python学习day2

1.进制

二进制:0B 位上为0,1

八进制:0O 位上为不超过8的数字

十六进制:0X 位上不超过f(15)

进制转换:

hex() 十六进制

bin() 二进制

oct() 八进制

2.int(),float(),round(),bool()

int函数可以将字符串类型转为整型,但是字符串内的内容必须是整型

int函数也可以将浮点数型转为整型,取整数部分,不会做四舍五入

float()同理,可以转化内含浮点数型内容的字符串

round()是四舍五入用的函数,会创建一个新的对象

bool()是转化为布尔数型的函数,只包含True(1)和False(0)

print(bool(""))
print(bool([]))
print(bool(False))
print(bool("False"))
'''
False
False
False
True
*空值都为false,但是字符串"False"实际储存的值就是这个字符串,所以是True
'''

3.整型数字的驻留机制

控制器中只有预存[-5,256]的较小整型,超出这个范围的对象每次都会新建

而在py文件中,预存机制仍然存在,但是新创建的对象会加入链表中,不会反复被创建

'''
命令行模式下整数只缓存[-5,256],超出这个范围的对象都需要新建
a=1000
b=1000
a is b
False   命令行模式下,较小的数已经被缓存,变量调用相同数字也同样调用相同对象
        但超出这个范围每次都会创建一个新对象,is判断就不再适用
'''
a = 10000
b = 10000
print(a is b)
'''
结果为True,较小整数的缓存机制仍然存在,但是文件模式下会将每次创建的整数对象放入链表
这样以后每次调用都会从链表中找,is判断永远为True
'''

4.运算符

布尔运算符 and,or,not

x=True
a=False
print(x or 30/0)
#or 前者为True就不会计算另一个,短路节约内存和时间
print(a or 30)
#前者为false就需要计算后者

print(50 and 100)
#因为x为True,返回后者
print(a and 30/0)
#前者为false,and判断直接短路,不计算后者
print(not(100<200))
#和括号内结果相反

and是与,一项为False直接返回False,一项为True返回另一项的值

or是或,一项为True返回True,一项为False返回另一项的值

not返回括号内结果的相反值

位运算符 &,|,^

a=25    #0B11001
b=10    #0B01010
print(bin(a|b)) #或 有1为1
print(bin(a&b)) #与 有0为0
print(bin(a^b)) #异或(就是要不同) 相同为0 不同为1
#bin()可以将数字转为二进制

c=2
print(c<<1)
#移动位次即为乘以2的几次幂,与二进制相关

同一运算符 is,is not

id相同才会判断是同一对象

字符串

1.字符串slice

a="abcdefg"
print(a[:])
print(a[2:])    #尾部给出一个超过index的数也可以
print(a[:3])
print(a[1:5:1])
print(a[1:5:2])
#start:end-1:step 都是包头不包尾,步长跳着取

print(a[-5:-1])
#可以用倒序计算,但是依然是正序排列
print(a[::-1])    #a[5:3:-1],a[-1:-3:-1]
#步长为负的时候可以倒序排列输出,倒着给出前面的范围,再约束负步长就可以有限的slice倒序输出

2.分割split和合并join

a="to be or not to be"
print(a.split("t"))
#注意空字符也会被分割进链表元素
'''
['', 'o be or no', ' ', 'o be']
空字符串是为了提示此处被分割,也是为了防止歧义,如"1aa2",分割后应为
["1","","2"]
'''

b=["j","i","m"]
print("".join(b))   #可以指定连接的符号
#join的引用命令不一样,要注意

join效率相比"+"更高

2.字符串查找与replace

a="abcdefghijklmnopqrstuvwxyz"
print(a[0])
print(a[25])
print(a[-1])
#正序查找字符串的区间是从0~(len-1),倒序查找是从-1~-len

print(a.replace("c","C"))
print(a)
#replace会生成一个全新的对象,重新指向变量a

a=(a.replace("c","C"))
print(a)
#该操作将变量a指向新的字符串

b="aaaaccdcddd"
print(b.replace("a","A"))
#该指令会替换字符串内所有的相同指定元素

字符串对象是不可变的,因此此类操作都会生成一个新的对象,而非原地修改

3.可变字符串

需要引入io模块

import io
#引入io模块,字符串本身绝对不可被原地修改,所以只能使用io创建一个可修改的模块
a="hello world"
aio=io.StringIO(a)
#生成新的可以修改的字符串对象,实际的可变字符串是aio,a仍然不可变
print(id(a),id(aio),aio)
print(aio.getvalue())   #aio并不是一个字符串类型,要通过getvalue获得值
aio.seek(6)
#放探针
aio.write("W")
#覆盖从探针位置起的字符
print(aio.getvalue())

4.字符串的驻留机制

a="aaa_c"
b="aaa_c"
print(a is b)
print(a == b)

c="aa#"
d="aa#"
print(c is d)
print(c == d)

'''
交互模式下,字符串只能驻留由数字,字母,下划线组成的,特殊字符每次都会创建新的对象
而在py文件中,没有区别
'''

5.字符串其他操作

a="abcdefgh"
print(a.startswith("abc"))
#开头是否相同
print(a.endswith("fgh"))
#结尾是否相同
print(a.find("a"))
#找到第一个相同的字符的位置;rfind()可以用来查询最后一次出现该字符的位置
print(a.count("a"))
#计算字符重复出现几次
print(a.isalnum())
#字符串是否全部以数字或字母组成
#isdigit,isalpha,isupper,islower,isspace都可以用于查询

b="**s*x*t**"
print(b.strip("*"))
#strip是去除首尾信息,split是分割,strip命令只与首位字符相关
print(b.lstrip("*"))
#l,r可以控制只去头或者只去尾

x="kato Megumi suki"
#以下所有命令都会生成新的字符串对象
print(x.capitalize())
#首字母大写,且所有其他字母小写
print(x.title())
#每个单词首字母大写
print(x.upper())
#全大写
print(x.lower())
#全小写
print(x.swapcase())
#大小写翻转

y="jim"
print(y.center(10,"*"))
#居中,括号内选择总位数以及填充的字符
print(y.ljust(10,"*"))
#左对齐或者右对齐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值