基本数据类型--数字、字符串
2.数字
int
没有数字大小的限制,没有long的类型,都只是整形int(在pyCharm中查看数据类型的方法,按住Ctrl不放,鼠标指针放在数据类型上,左键点击)
a = "123"
print(type(a),a) #type(variable) #查看这个变量的类型
b = int(a)
print(type(b),b)
num = "0011" #16进制表示
v = int(num, base=16) #base这个表示将16进制表示的数字转换为10进制
print(v)
r = age.bit_length() # bit_lenght当前数字的二进制,至少用n位表示,就是有多少位2进制数(不是字节)
number = 1234
string = str(number) #将数字转换为字符串
number = int(string) #将字符串转换为数字
float
float是浮点数的意思,也就是有小数部分
#浮点数
number = 5.3
print(type(number),number)
复数
python重点复数的表示方法如下:(4+4j)
复数一般在某些特定领域需要,一般程序员不会涉及到。
3.字符串
注意
- 字符串一旦创建就不能在被修改,只能另外申请空间储存修改后的字符串。
- 字符串的形式:
- n1 = "alex" n2 = 'root' n3 = """eric""" n4='''tony''' 只要是引号都可以,同时””” “”” 既可以用于字符串,亦可以用于多行注释
字符串常见基本内置函数
s1 = "asdf"
s2 = "asdffas"
test = "aLex"
v = test.capitalize() # 首字母大写
v1 = test.casefold() # 所有变小写,casefold更牛逼,很多未知的符号对相应变小写
print(v1)
v2 = test.lower() # 英文中所有变小写
print(v2)
# 设置宽度,并将内容居中
v = test.center(20<代指总长度>,"*"<空白未知填充,只能写一个字符,可有可无>)
# 原函数def center(self<表示自身,不用使用>,width<必须写>,fillchar=None<可选项>)
print(v)
v = test.ljust(20,'*') #与center 功能类似,放在左边
v = test.rjust(20,'*') #与center 功能类似,放在右边
test = "aLexalexr"
v = test.count('ex') # 去字符串中寻找,寻找子序列的出现次数
print(v)
test = "aLexalexr"
v = test.count('ex',5,6) # 5这里的位置表示从0开始到第五个开始,6这里的位置表示结束位置,后面两个位置可选,结束位置不包含 [),机制和java一样
print(v)
# 以什么什么结尾
# 以什么什么开始
test = "alex"
v = test.endswith('ex') #结果是布尔值
v = test.startswith('ex') #结果是布尔值
# print(v)
# test = "username\temail\tpassword\n邓晓庆\t123@.com\t123\n" # \为转义字符, \t制表符
# v = test.expandtabs(6) #以括号内的指定参数个数进行排列,如果遇到\t,自动补齐空格到参数个。
# print(v,len(v))
test = "alexalex"
v = test.find('ex') 从开始往后找,找到第一个之后,获取其位置,可以指定开始和结束的位置,结束的位置不包含 [ ),如果未找到返回-1,机制和java一样
print(v)
test = "alexalex"
v = test.index('8') #找到对应的字符串,返回其下标,如果没有则抛出异常
print(v)
test = 'i am {name}, age {a}'
print(test)
v = test.format(name='alex',a=19) # 格式化,将一个字符串中的占位符替换为指定的值(没有数据类型的限制),{ }占位符
print(v)
test = 'i am {0}, age {1}'
print(test)
v = test.format('alex',19) # 如果占位符里面为数字,表示为依次进行替换,不建议与有指定名字的占位符混搭,容易出错
print(v)
# 格式化,传入的值 {"name": 'alex', "a": 19}
test = 'i am {name}, age {a}'
v1 = test.format(name='df',a=10)
v2 = test.format_map({"name": 'alex', "a": 19}) #传入的为字典,固定格式
test = "123"
v = test.isalnum() # 字符串中是否只包含字母,数字。
print(v)
test = "as2df"
v = test.isalpha() # 是否是字母,汉字
print(v)
# 13 当前输入的字符串是否是数字
test = "二" # 1,②
v1 = test.isdecimal() # 当前输入的字符串是否是数字,只支持十进制数
v2 = test.isdigit() # 当前输入的字符串是否是数字,支持十进制,特殊数字字符
v3 = test.isnumeric() #当前输入的字符串是否是数字,支持十进制,特殊数字字符,中文数字
print(v1,v2,v3)
#\t 制表符(不可显示)
#\n 换行(不可显示)
test = "oiuas\tdfkj"
v = test.isprintable() # 是否存在不可显示的字符,如果含有,返回False
print(v)
# 15 判断是否全部是空格
test = ""
v = test.isspace() #判断是否全部是空格,''这种不算空格
print(v)
# 16 判断是否是标题
test = "Return True if all cased characters in S are uppercase and there is"
# v1 = test.istitle() #判断是否为标题(首字母全部大写)
print(v1)
v2 = test.title() #将字符串转换为标题
print(v2)
v3 = v2.istitle()
print(v3)
#@@@@ ***** 将字符串中的每一个元素按照指定分隔符进行拼接
test = "你是风儿我是沙"
print(test)
t = ' '
v = "_".join(test) # 你_是_风_儿_我_是_沙,其他数据类型中的元素为字符串也可以(比如列表)
print(v)
# 18 转换为大小写
test = "Alex"
v1 = test.islower() #判断是否全部是大小写
v2 = test.lower() #转换为大小写
print(v1, v2)
v1 = test.isupper() #判断是否全部是大小写
v2 = test.upper() #转换为大小写
print(v1,v2)
# 19 If chars is given and not None, remove characters in chars #instead ,如果给定了一些非空的(''空白不属于非空),删除参数给定字符的字符
test = "xa"
v = test.lstrip('xa') #默认移除左边\t \r \n 空白,有参数就从左到右找有没有对应的字符,有就删除,直到遇见参数没有的字符的就中断,
v = test.rstrip('9lexxexa') #默认移除右边\t \r \n 空白,有参数就从右到左找有没有对应的字符,有就删除,直到遇见参数没有的字符的就中断,
v = test.strip('xa') #默认移除两边\t \r \n 空白,有参数就从两边找,然后删除,直到遇见参数没有的字符的就中断,
print(v)
20 对应关系替换
test = "aeiou"
test1 = "12345"
v = "asidufkasd;fiuadkf;adfkjalsdjf"
m = str.maketrans("aeiou", "12345") #创建对应关系,可用于替换
new_v = v.translate(m)
print(new_v)
# 21 分割为三部分
test = "testasdsddfg"
v = test.partition('s') #从左边找到指定的字符串进行分割,分成三份,如果字符串在最开始,以‘’空代替。所以么有lpartition
print(v)
v = test.rpartition('s') #从右到左找到指定的字符串进行分割,分成三份
print(v)
# 22 分割为指定个数
v = test.split('s',2) #从左到右分割为指定个数,不加个数会将所有的分割,这种分割会去除指定字符串
print(v)
test.rsplit() #从右到左分割为指定个数,不加个数会将所有的分割,这种分割会默认去除空格或空格操作
# 23 分割,只能根据,true,false:是否保留换行符
test = "asdfadfasdf\nasdfasdf\nadfasdf"
v = test.splitlines(False)
print(v)
# 24 以xxx开头,以xx结尾
est = "backend 1.1.1.1"
v = test.startswith('a') #以什么什么开头,布尔值
print(v)
test.endswith('a’) #以什么什么开头,布尔值
# 25 大小写转换
test = "aLex"
v = test.swapcase() #大小写转换
print(v)
# 26 字母,数字,下划线 : 标识符 def class
a = "def"
v = a.isidentifier() #判断字符串能否被使用为标识符
print(v)
test = "alexalexalex"
v = test.replace("ex",'bbb') #将指定字符串替换为指定字符串,全部换
print(v)
v = test.replace("ex",'bbb',2) #将指定字符串替换为指定字符串,从左到右指定换参数个
print(v)
7个基本函数
- join # '_'.join("asdfasdf")
- split
- find
- strip
- upper
- lower
- replace
4个关键函数
- len()
- for循环
- 索引<下标>
- 切片 #所有的数据类型都可以用
test = “alex”
v = test[0] #取字符
t = test[0:2] #取指定字符切片,不包括末尾指定的数
c = test[0:-1] #从取字符切片,末尾倒着数,不包括末尾 (嵌套也可以取)
print(len(c)) #查看长度,有多少个字符,其他数据类型也可以,python2查看汉字会为3倍(utf8)
再次强调
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串
name = "zhengjianwen"
age = "18"
info = name + age
print(name,id(name))
print(age,id(age))
print(info,id(info))
4.字符串格式化
%d 十进制数字
%s 字符串(可接受任何值)
%f 浮点数
msg='i am %s my hobby is %s' % ('lhf','alex') #多个值的时候要用括号
print(msg)
msg='i am %s my hobby is %s' % ('lhf',1) #%s可以接受任何值
msg='i am %s my hobby is %s' % ('lhf',[1,2]) #接受列表
print(msg)
name='lhf'
age=19
msg='i am %s my hobby is %d' % (name,age) #%d代表整型数字,也可接受浮点数(转换成int)
print(msg)
#打印浮点数
tpl = "percent %.2f" % 99.976234444444444444 #代表只保留后面两位小数
print(tpl)
#打印百分比
tpl = 'percent %.2f %%' % 99.976234444444444444 #打印百分比
print(tpl)
tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18} #括号表示一个键key,后面传的为一个字典
print(tpl)
msg='i am %(name)+60s my hobby is alex' %{'name':'lhf'} #()key -左对齐(+右对齐) 60宽度
print(msg)
msg='i am \033[43;1m%(name)+60s\033[0m my hobby is alex' %{'name':'lhf'} # 加颜色
print(msg)
print('root','x','0','0',sep=':') #sep以:产生一个记录
print('root'+':'+'x'+':'+'0','0')
5.format格式化
tpl = "i am {name}, age {age}, really {name}".format(name = "seven", age = 18) #
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18}) # **代表字典
tpl = "i am {:s}, age {:d}".format(*["seven", 18]) #*代表列表
tpl = "i am {:s}, age {:d}".format("seven", 18) #["seven", 18]
l=["seven", 18]
tpl = "i am {:s}, age {:d}".format(*l)
tpl = "i am {:s}, age {:d}".format('seven',18)
print(tpl)
# 进制转换,后面的参数以10进制为准(x小写的16进制 X大写的16进制),百分数,参数少了不行,多了可以
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(15, 15, 15, 15, 15, 15.87, 2)
print(tpl)
tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18}) #**代表字典
tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
tpl = "i am {:s}, age {:d}".format(*["seven", 18]) #*代表传入的为列表
tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)
tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
6.数字,字符串相关的加减乘除
字符串加法:
n1 = "a"
n2 = "b"
n3 = "c"
n4 = n1 + n2 + n3 # "abc"
字符串乘法:
n1 = "a"
n2 = n1 * 3 # "aaa"
数字:
n1 = 9
n2 = 2
n3 = n1 + n2
n3 = n1 - n2
n3 = n1 * n2
n3 = n1 / n2
n3 = n1 % n2 # 求余
n3 = n1 ** n2 # 这个表示n1的n2次方
n3 = n1 // na # 去除小数部分的值