02.基本数据类型--数字、字符串

基本数据类型--数字、字符串

一、数据类型分类

1).基本的数据类型

  1. 数字:intfloat
  2. 字符串:str
  3. 布尔值:bool
    • True
    • False

2).数据集

  1. 列表:list
  2. 元组:tuple
  3. 字典:dict

每种数据类型的实例都可以直接调用内置函数,python属于弱类型语言,定义变量时不用声明数据类型,变量其实就是一个容器。

二、数字

1).整型int

  1. 没有数字大小的限制,没有类似Java的long类型

  2. 案例演示

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进制数(不是字节)
  1. 数字与字符串类型之间的转换
number = 1234
string = str(number)    #将数字转换为字符串
number = int(string)   #将字符串转换为数字

2).浮点数float

  1. float是浮点数的意思,也就是有小数部分 (Python中没有double类型)
number = 5.3
print(type(number),number)

3).复数

  1. Python复数的表示方法如下:
(2 + 2j)
  1. 复数一般在某些特定领域需要。

三、字符串

字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串

python中字符串和数字不能直接相加

1).字符串常见形式

  1. 字符串的形式:
n1 = "hahadasheng"
n2 = "hahadasheng"
n3 = """hahadasheng"""
n4 = """hahadasheng"""

只要是引号都可以,同时""" """ 既可以用于字符串,亦可以用于多行注释

  1. 字符串一旦创建就不能在被修改,只能另外申请空间储存修改后的字符串。

2).字符串常用内置函数

# 下方使用的案例变量
name = "python"
v = "I like Java and Python"
test = v
  1. 首字母大写
v = name.capitalize()
  1. 全大写
v = name.upper()
v1 = test.isupper()   # 判断是否全部是大小写
  1. 全变小写
v = test.lower() # 英文中所有变小写
v1 = test.islower()   # 判断是否全部是大小写
print(v)
v = test.casefold() # 所有变小写,可以将很多未知的符号对相应变小写。
print(v)
  1. 大小写转换
test = "hahadasheng"
v = test.swapcase()   # 大小写转换
print(v)
  1. 判断前缀
v = test.startswith("haha")   #结果是布尔值
  1. 判断后缀
name = "hahadasheng"
v = name.endswith("haha")   #结果是布尔值
  1. 查找索引对应的字符
test = "hahadasheng"
v = test.index("8") # 必须为字符串,感觉有点怪!!

找到对应的字符串,返回其下标,如果没有则抛出异常

  1. 查找子串第一个位置的索引
test = "hahadasheng"
v = test.find("en")
  1. 替换函数
test = "hahahahahahahaaaaaaaa"

# 将指定字符串替换为指定字符串,全部换
v = test.replace("a","b")
print(v)

# 将指定字符串替换为指定字符串,从左到右指定换参数个
v = test.replace("b","a",2)
print(v)
  1. 分割为指定个数
# 从左到右分割为指定个数,不加个数会将所有的分割,这种分割会去除指定字符串
v = test.split("s",2)

# 从右到左分割为指定个数,不加个数会将所有的分割,这种分割会默认去除空格或空格操作
test.rsplit()
  1. 根据换行符进行分割,布尔值参数确定是否保留换行符
test = "asdfadfasdf\nasdfasdf\nadfasdf"
v = test.splitlines(False)
print(v)
  1. 将字符串中的每一个元素按照指定分隔符进行拼接【常用】
    • 其他数据类型中的元素为字符串也可以 (比如列表)
test = "你是风儿我是沙"
print(test)
v = "_".join(test)  #  你_是_风_儿_我_是_沙
print(v)
  1. 给定了一些非空的字符串(""空白 不属于非空),删除参数给定字符的字符
# 默认移除左边\t \r \n 空白
test = "\r\n\t del I am your God"
v = test.lstrip()
print(v) #del I am your God

# 有参数就从左到右找有没有对应的字符,有就删除,直到遇见参数没有的字符的就中断
test = "del I am your God"
v = test.lstrip("del ")
print(v) #I am your God

# 右边的操作,和上述类似
v = test.rstrip()
v = test.rstrip("del")

# 两边同时操作,和上述类似
v = test.strip()
v = test.strip("xa")
  1. 判断字符串中是否只包含字母,数字
test = "123"
v = test.isalnum()  # 。
print(v)
  1. 判断字符串中是否只包含字母,汉字
test = "as2df"
v = test.isalpha()
print(v)
  1. 当前字符串是否是数字
test = "二"   # 1,②
v1 = test.isdecimal()   # 当前输入的字符串是否是数字,只支持十进制数
v2 = test.isdigit()     # 当前输入的字符串是否是数字,支持十进制,特殊数字字符
v3 = test.isnumeric()   # 当前输入的字符串是否是数字,支持十进制,特殊数字字符,中文数字
print(v1,v2,v3)

3).字符串常用用法

  1. 获取长度
len("hahadasheng")
  1. for循环
for i in "hahadasheng":
    print(i)
  1. 切片(所有的数据类型都可以用)
test = "hahadasheng"
v = test[0]    # 取字符
t = test[0:2]  # 取指定字符切片,不包括末尾指定的数
c = test[0:-1] # 从取字符切片,末尾倒着数,不包括末尾 (嵌套也可以取)
d = test[2:]   # 从索引2到最后

3).其他函数

  1. 设置字符串总宽度,并将原始内容居中
# def center(
#    self<表示自身,不用使用>,
#    width<代指总长度>,
#    fillchar=None<空白填充,默认字符" ",只能写一个字符,可选变量>
#   )
v = test.center(20, "*")
  1. 设置宽度,并左对齐
v = test.ljust(20,"*")  #与center 功能类似,放在左边
  1. 设置宽度,右对齐
v = test.rjust(20,"*")  #与center 功能类似,放在右边
  1. 寻找子串序列次数
test = "aaa"
v = test.count("aa")   # 去字符串中寻找,寻找子序列的出现次数
print(v)

查询过程会分隔字符串,被找到的子串的子串不会被纳入下一次查找的范围

  1. 寻找子串序列出现的次数,执行开始位置和结束位置 (结束位置不包含)
test = "hahadasheng is very handsome"
v = test.count("da", 5, 6)   # 5这里的位置表示从0开始到第五个开始,6这里的位置表示结束位置,后面两个位置可选,结束位置不包含 [),机制和java一样
  1. 表格化打印
# \为转义字符, \t制表符
test = "username\temail\tpassword\n晓庆\t123@.com\t123\n"

# 以括号内的指定参数个数进行排列,如果遇到\t,自动补齐空格到参数个。
v = test.expandtabs(12)
print(v,len(v))

从开始往后找,找到第一个之后,获取其位置,可以指定开始和结束的位置,结束的位置不包含,如果未找到返回-1。

  1. 字符占位符格式化
test = "i am {name}, age {a}"
print(test)
v = test.format(name="hahadasheng",a=18)
print(v)

格式化,将一个字符串中的占位符替换为指定的值,没有数据类型的限制

  1. 数字占位符格式化
test = "i am {0}, age {1}"
print(test)
v = test.format("hahadasheng",18)
print(v)

如果占位符里面为数字,表示为依次进行替换 (不建议与有指定名字的占位符混搭,容易出错)

  1. 字典格式化
test = "i am {name}, age {a}"
v1 = test.format(name="df",a=10)
v2 = test.format_map({"name": "hahadasheng", "a": 19})  #传入的为字典,固定格式
  1. 判断是否存在不可显示的字符,如果含有,返回False
#\t   制表符(不可显示)
#\n   换行(不可显示)
test = "oiuas\tdfkj"
v = test.isprintable()  #
print(v)
  1. 判断是否全部是空格
test = ""
v = test.isspace()
print(v)

""这种不算空格

  1. 判断是否是标题 (首字母全部大写)
test = "Return True if all cased characters in S are uppercase and there is"
v1 = test.istitle()
print(v1)
  1. 将字符串转换为标题
v2 = test.title()
print(v2)
  1. 对应关系替换
v = "asidufkasd;fiuadkf;adfkjalsdjf"

# 创建对应关系,可用于替换, 个数必须对应上!!
m = str.maketrans("aeiou", "12345")

# 开始转换
new_v = v.translate(m)
print(new_v)
  1. 分割字符串 (三部分)
test = "testasdsddfg"
v = test.partition("s")    #从左边找到指定的字符串进行分割,分成三份,如果字符串在最开始,以‘’空代替。所以么有lpartition
print(v)
v = test.rpartition("s")   #从右到左找到指定的字符串进行分割,分成三份
print(v)
  1. 字母,数字,下划线 : 标识符 def class
a = "def"

# 判断字符串能否被使用为标识符
v = a.isidentifier()
print(v)

4).字符串符号格式化

  1. 格式化符号

    • %d: 十进制数字
    • %f: 浮点数
    • %s: 字符串、任何值
  2. 使用格式

# 多个值的时候要用括号
msg = "i am %s my hobby is %s" % ("hahadasheng","java")
print(msg)
# %s可以接受任何值
msg = "i am %s my hobby is %s" % ("hahadasheng",1)
# 接受列表
msg = "i am %s my hobby is %s" % ("hahadasheng",[1,2])
print(msg)
name="hahadasheng"
age=19
# %d代表整型数字,也可接受浮点数(转换成int)
msg="i am %s my hobby is %d" % (name, age)
print(msg)
  1. 打印浮点数
# 代表只保留后面两位小数
tpl = "percent %.2f" % 99.976234444444444444
print(tpl)
  1. 打印百分比
tpl = "percent %.2f %%" % 99.976234444444444444  # 打印百分比
print(tpl)
  1. 直接打印字典
tpl = "i am %(name)s age %(age)d" % {"name": "hahadasheng", "age": 18}
print(tpl)
  1. 左对齐(+右对齐) 60宽度
msg="i am %(name)+60s my hobby is hahadasheng" %{"name":"lhf"}
print(msg)
  1. 加上颜色
msg="i am \033[43;1m%(name)+60s\033[0m my hobby is hahadasheng" %{"name":"lhf"}
print(msg)
  1. 指定拼接分隔符
print("root","x","0","0",sep=":")

# 等价与如下方式
print("root"+":"+"x"+":"+"0","0")

5).format函数格式化

  1. 一般形式
# 指定参数
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)
  1. 进制转换

后面的参数以10进制为准(x小写的16进制 X大写的16进制),百分数,参数少了不行,多了可以

tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(0x15, 15, 15, 15, 15, 15.87, 2)
print(tpl)
  1. 更多参考
tpl = "i am {}, age {}, {}".format("seven", 18, "hahadasheng")
tpl = "i am {}, age {}, {}".format(*["seven", 18, "hahadasheng"])
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)

四、数字,字符串相关的加减乘除

1).字符串加法

n1 = "a"
n2 = "b"
n3 = "c"
n4 = n1 + n2 + n3   # "abc"

2).字符串乘法:

n1 = "a"
n2 = n1 * 3   # "aaa"

3).数字

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  # 去除小数部分的值

五、补充:进制转换

1).整数之间的进制转换

hex(16)     # 10进制转16进制
oct(8)      # 10进制转8进制
bin(8)      # 10进制转2进制

2).字符串转整数:

int("10")       # 字符串转换成10进制整数
int("10",16)    # 字符串转换成16进制整数
int("0x10",16)  # 字符串转换成16进制整数
int("10",8)     # 字符串转换成8进制整数
int("010",8)    # 字符串转换成8进制整数
int("10",2)     # 字符串转换成2进制整数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 《Python从小白到大牛》已经上市! 在声明变量时会用到数据类型,在前面已经用到一些数据类型,例如整数和字符串等...
    tony关东升阅读 680评论 0 1
  • 1 字符编码 python中的编码采用的是Unicode编码。什么是编码?就是数字和字符的一一对应的,其中字符对应...
    barriers阅读 411评论 0 1
  • 一、字符串 字符串(str)是容器型数据类型,他是将单引号('')、双引号("")、三个单引号或三个双引号('''...
    木_Python阅读 175评论 0 2
  • 安排工作、撰写建议书、给他人出谋划策……最近发现竟然能将自己的想法如实描述出来,每天坚持写日更功不可没。 也算是意...
    闺蜜云阅读 221评论 0 1
  • 我站在星空这头 望着彼岸的你 看你很远 看星很近 近的能听见你的呼吸 声声都能听见你无言的冷漠 你优雅地漫步于璀璨...
    渡先森阅读 225评论 3 4