python学习之路-基本数据类型1 变量的概念、数字、字符串
1 什么是数据类型?
每种编程语言都有自己的数据类型,用于标识计算机可以认识的数据,Python中主要的数据类型为字符串,整数,浮点数,列表,元祖,字典,集合七种主要的数据类型,其中以列表,字典为最主要的数据类型。
2 什么是变量?
在说数据类型之前,首先说一下变量,那什么是变量?简单讲,变量就是一个容器,用来装东西的,可以装不同的东西。如一个瓶子,可以拿去装酱油,也可以拿去装可乐;其中瓶子就是一个变量,我们可以给瓶子起个名字,就是变量名,而瓶子中装的酱油和可乐就是不同的数据类型。
2.1 变量及其命名规则
2.1.1变量的命名规则
- 只允许使用字母、数字和下划线。
- 变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message。
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会报错。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
- 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
- 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
2.1.2 变量的命名原则
- 驼峰式
- 下划线式
2.1.3 使用变量时避免命名错误
名称错误通常意味着两种情况:
- 要么是使用变量前忘记了给它赋值,
- 要么是输入变量名时拼写不正确。
3 python中的数据类型
下面将Python中主要的数据类型分数字,字符串,列表,元祖,字典,集合六种类型进行总结。
3.1 数字
Python的数字也有4中不同的类型,分别是:整数(int)、浮点数(float)、布尔值(bool)、复数(complex)。
Python将带小数点的数字都称为浮点数。
3.1.1 整数
简单理解,整数就是没有小数点的数!例如0,-1,23333333,整数的准确概念可参考该内容
Python中的整数又有不同的进制,如十进制,二进制,十六进制,八进制。
现在不懂进制没关系,想了解的话可以百度,我就不长篇大论了。
他们之间的相互转化可以参考该内容
- 十进制写法就是正常写法;
- 二进制写法加前缀0b,且只能出现0 1两种数字的组合,例如:0b1001110;
- 八进制写法加前缀0o,出现0~7数字组合,例如0o76543210;
- 十六进制写法加前缀0x,出现09和AF的数字和字母组合,例如0xA20974BCF;
运行时,他们会自动转为十进制输出结果,我们试试:
print(0b100110) # 二进制
# 结果:38
print(0o7654321) # 八进制
# 结果:2054353</pre>
print(0xA20974BCF) # 十六进制
# 结果:43496459215
print(0xABCD) # 十六进制
# 结果:43981
3.1.2 浮点数
简单点说,浮点数就是带小数点的数字。
划重点:浮点数只能以十进制方式书写,也就是不加前缀。
3.1.3 整数型与浮点型的区别
整数型和浮点型都是数字,区别在于:
- 整数型对应的是数学中的整数;
- 浮点型可以看作是实数(暂不考虑精度问题),即带小数点的数。
在python中数字5 和5.0使用不同的数据类型表示,数字5为整数型,5.0为浮点型。
3.1.4 布尔值
布尔值就是我们常说的逻辑值,可以理解为对或者错,正面与反面。
3.1.5 复数
复数是什么?
有理数和无理数统称实数,在实数之外还有一种叫复数,一般用不到,了解一下就可以了。
在Python中,复数是这样表示的:
print(1+1j)
# 结果:(1+1j)
print(type(1+1j))
# 结果:complex
3.1.6 可以使用type()函数来查看变量的类型
type(10)
# 结果:int
type(10.3)
# 结果:float
print(type('10.3'))
# 结果:str
3.1.7 可以使用 isinstance()函数来判断变量是否为某一类型
print(isinstance(2,int))
# 结果:True
print(isinstance(2.0,int))
# 结果:False
3.2 字符串
3.2.1 字符串的定义
在Python中,用引号包起的都被称为字符串,其中引号可以是单引号(‘’),也可以是双引号(“”)和三引号(''' ''' 或""" """)
name = 'zhang san'
str = 'good morning!'
print(str,name)
# 结果:goodmorning! zhang san
3.2.2 字符串的格式化输出
在很多时候,我们需要在字符串中放置变量,然后用变量的值替换,python中字符串的格式化输出有两种方式:
3.2.2.1使用%() 实现字符串格式化输出
具体使用方法如下:
name = 'zhang san'
age = 22
job = 'student'
str = "my name is %s,I'm %d years old,I'm a %s." %(name,age,job)
print(str)
# 结果:my name is zhang san,I'm 22 years old,I'm a student.
其中%s代表字符串变量,%d代表整数型变量。
常见的格式化字符:
格式 | 描述 |
---|---|
%% | 百分号标记 ,就是输出一个% |
%c | 字符及其ASCII码 |
%s | 字符串 |
%d | 有符号整数(十进制) |
%u | 无符号整数(十进制) |
%o | 无符号整数(八进制) |
%x | 无符号整数(十六进制) |
%X | 无符号整数(十六进制大写字符) |
%e | 浮点数字(科学计数法) |
%E | 浮点数字(科学计数法,用E代替e) |
%f | 浮点数字(用小数点符号) |
%g | 浮点数字(根据值的大小采用%e或%f) |
%G | 浮点数字(类似于%g) |
%p | 指针(用十六进制打印值的内存地址) |
%n | 存储输出字符的数量放进参数列表的下一个变量中 |
其中,最常用的为%s,%d,%f,%e。
3.2.2.2 使用format()函数实现字符串格式化输出
name = 'zhang san'
age = 22
job = 'student'
# 方式一:
str = "my name is {name},I'm {age} years old,I'm a {job}." .format(name=name, age = age, job = job)
print(str)
# 结果: my name is zhang san,I'm 22 years old,I'm a zhang san.</pre>
# 方式二:
str = "my name is {0},I'm {1} years old,I'm a {2}." .format(name, age, job)
print(str)
# 结果: my name is zhang san,I'm 22 years old,I'm a zhang san.
其他用法:
age = 25
name = 'Caroline'
print('{0:.3} is a decimal. '.format(1/3)) # 小数点后三位
# 结果:0.333 is a decimal.
print('{0:_^11} is a 11 length. '.format(name)) # 使用_补齐空位
# 结果:_Caroline__ is a 11 length.
print('My name is {0.name}'.format(open('out.txt', 'w'))) # 调用方法
# 结果:My name is out.txt
print('My name is {0:8}.'.format('Fred')) # 指定宽度
# 结果:My name is Fred
3.2.3 转义
转义转义,顾名思义,就是转换含义,通俗的说就是改变原来的意思
Python用反斜杠(\)来转义字符
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
' | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
3.2.4.字符串常用操作方法
对字符串的操作,常用的操作主要包括查看字符串长度,索引和切片,分割和拼接字符串,字符串格式的判断和修改,字符串填充,字符串子串的查找和替换等操作
3.2.4.1 查看字符串长度
用len()函数查看字符串的长度
a = 'zhang san'
print(len(a))
# 结果:9
b = "你好"
print(len(b))
# 结果:2
由上面两个例子可以看出,len()函数查看的是字符串中字符的数量,其还可以查看列表,元祖,字典中的长度,下面会提到。
3.2.4.2 提取字符串中的子串(索引和切片)
单个字符串的提取用索引,多个字符串的提取用切片
字符串的索引:
Python有两种索引方式:
- 从前往后的正向索引:有m个字符长度的字符串,索引值是0~m-1(计算机很多都是从0开始标序号的)
- 从后往前的负数索引:有m个字符长度的字符串,索引值是-1~-m
name = 'zhangsan'
print(name[0])
# 结果:'z'
name = 'zhangsan'
print(name[-3])
# 结果: 's'
字符串的切片:
切片:顾名思义,就是把东西切成片,如果把字符串看成一根黄瓜,切片就是切出一个黄瓜片,黄瓜片的厚度就代表了切出来的字符串的长度。
我们来想一下,如果要从一根黄瓜里面切出一个黄瓜片,一般是要切两刀,在黄瓜的某个位置切一刀,然后根据所需黄瓜片的厚度,在另外的一个位置再切一刀,黄瓜片就产生了。当然,如果我们从头开始切,那第一刀就不用切了,只要根据想要黄瓜片的厚度在相应位置切一刀就可以产生一个黄瓜片,同理,我们想要黄瓜的结尾部分,只要切一刀就可以了,后面的部分也是一个黄瓜片。所以,切片的语法就类似我们切黄瓜片,需要三个参数,开始的位置,结束的位置,每刀切多厚。
切片标准的写法是用两个冒号分割三个数字,代表的意思分别是:
- 第一个数字表示切片的开始位置(索引),可以为正值也可以为负值(参考字符串索引的用法),省略为0,即索引为0开始取。
- 第二个数字表示切片的截至位置,但是不包括这个位置,也就是切到它的前一个位置结束(索引),可以为正值也可以为负值,省略代表取到最后。
- 第三个表示切片的步长(切片的厚度),当省略步长时候,默认为1,可以省略,省略后冒号也可以省略,也可以为负数,代表逆序取。
三个数全部省略,表示取字符串的全部,相当于没切。
name = 'zhang san'
print(name[1:4] ) # 从第2个位置切到第4个位置
# 结果:'han'
print(name[1:4:2]) # 从第2个位置切到第4个位置,步长为2
# 结果:'hn'
print(name[1:]) # 从第2个位置切到最后
# 结果:'hang san'
print(name[::]) # 切出所有
# 结果:'zhang san'
print(name[::2] ) # 切出所有,步长为2
# 结果: 'zagsn'
print(name[::-1]) # 逆序字符串
# 结果: 'nas gnahz'
print(name[:5]) # 切出前5个字符
# 结果:'zhang'
3.2.4.3 字符串分割
1)、根据指定的分隔符将字符串分割为前,中,后三部分
一般为指定的分隔符前面为1部分,分隔符为一部分,剩下的为一部分 ,返回一个含有三个元素的元祖
partition(self, sep)方法从左面开始
rpartition(self, sep)方法从右面开始
name = 'zhangsan,lisi,wangwu,maliu'
name.partition("a")
# 结果: ('zh', 'a', 'ngsan,lisi,wangwu,maliu')
2)、根据指定的分割符分割,默认分隔符为空格
指定分隔符和最多分割几次,默认不限次数,返回的是列表
split(self, sep=None, maxsplit=None): 分割,从左侧开始,返回的是列表
rsplit(self, sep=None, maxsplit=None): 分割,从右侧开始,返回的是列表
splitlines(self, keepends=False):根据换行符进行分割,返回列表
name = """zhangsan,lisi,wangwu"""
print(name.split(sep = 'a',maxsplit=1))
# 结果:['zh', 'ngsan,lisi,wangwu']
name = """zhangsan,lisi,wangwu"""
print(name.rsplit(sep = 'a',maxsplit=1))
# 结果:['zhangsan,lisi,w', 'ngwu']
name = """zhangsan
lisi
wangwu
"""
print(name.splitlines())
# 结果: ['zhangsan ', 'lisi ', 'wangwu']
3.2.4.4 字符串拼接
1)、两个字符串拼接可以使用加号(+)来实现,如果想要将列表中的字符串全部拼接起来,可以使用join()方法。
'my' +' '+ 'name' + ' '+ 'is' + ' ' + 'zhangsan'
# 结果: 'my name is zhangsan'
2)、join(self, iterable): 使用指定的连接符,将传入的列表中的各元素连接在一起
s = ','
a = s.join(['lisi','wangwu','maliu'])
print(a)
# 结果: 'lisi,wangwu,maliu'
join方法和split方法是相反的操作:
name = ['lisi', 'wangwu', 'maliu']
s = ','
a = s.join(['lisi', 'wangwu', 'maliu'])
print(a)
# 结果:lisi,wangwu,maliu
b = a.split(s)
print(b)
# 结果:['lisi', 'wangwu', 'maliu']
3.2.4.5 对字符串的格式进行判断和修改
1)、判断字符串是否为某种格式:
- islower(self) 判断字符串是否为小写
- isspace(self) 判断字符串是否为空字符串
- istitle(self) 判断字符串是否为标题格式的字符串
- isupper(self) 判断字符串是否全为大写
- startswith(self, prefix, start=None, end=None) 判断字符串是否是以某个子串起始
- endswith(self, suffix, start=None, end=None) 判断字符串是否以某个子串结束
- isalnum(self): 是否是字母和数字
- isalpha(self): 是否是字母
- isdigit(self): 是否是数字
2)、使用方法修改字符串的格式:
- title(self)以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。
- upper(self)将字符串改为全部大写
- lower(self)将字符串改为全部小写
- capitalize(self)将首字母变为大写
- def swapcase(self) 字符串大写变小写,小写变大写 """
name = 'zhang san'
job = 'IT'
print(name.title())
# 结果:Zhang San
print(name.upper())
# 结果:ZHANG SAN
print(job.lower())
# 结果:it
print(name.capitalize())
# 结果:Zhang san
print(name.title().swapcase())
# 结果:zHANG sAN
3.2.4.6 字符串填充及删除空白的相关方法
1)、使用制表符或换行符来添加空白
- 要在字符串中添加制表符,可使用字符组合\t
- 要在字符串中添加换行符,可使用字符组合\n
print('hello,zhang san')
# 结果:hello,zhang san
print('hello,\nzhang san')
# 结果:hello,
# zhang san
print('hello,\tzhang san')
# 结果:hello, zhang san
2)、 删除空白
- rstrip():删除字符串末尾的空白,并不改变原变量值
- lstrip():删除字符串开头的空白
- strip():同时删除 字符串开头和末尾的空白
name = ' zhang san '
print('|' + name+'|',len(name))
# 结果: | zhang san | 17
print('|' + name.rstrip()+'|',len(name.rstrip()))
# 结果: | zhang san| 13
print('|' + name.lstrip()+'|',len(name.lstrip()))
# 结果:|zhang san | 13
print('|' + name.strip()+'|',len(name.strip()))
# 结果:|zhang san| 9
3)、将字符串填充为指定的长度
- center(self, width, fillchar=None)将字符串填充为指定的长度,并将字符串置于中间,fillchar参数指定填充的符号,默认为空
- ljust(self, width, fillchar=None)将字符串填充为指定的长度,并将字符串置于左侧,fillchar参数指定填充的符号,默认为空
- rjust(self, width, fillchar=None)将字符串填充为指定的长度,并将字符串置于右侧,fillchar参数指定填充的符号,默认为空
- zfill(self, width):返回指定长度的字符串,原字符串右对齐,不满指定的长度,在前面填充0。
name = 'zhangsan'
print(name.center(50,'-'))
# 结果:---------------------zhangsan---------------------
print(name.ljust(50,'*'))
# 结果:zhangsan******************************************
print(name.rjust(50,'*'))
# 结果:******************************************zhangsan
print(name.zfill(20))
# 结果:000000000000zhangsan
3.2.4.7 对字符串的子串进行操作
1)、计算字符串中子串的个数
count(self, sub, start=None, end=None) 用于统计字符串中某个子串的个数,start为开始查找位置,end为结束查找位置,但不包括该位置。
name = 'zhangsan'
print(name.count('a')) # 找’zhangsan‘这个字符串中有几个‘a’
# 结果: 2
name = 'zhangsan'
print(name.count('a',3)) # 从’zhangsan‘这个字符串的第三个位置即n开始找字符串中有几个‘a’
# 结果:1
name = 'zhangsan'
print(name.count('a',3,6)) # 从’zhangsan‘这个字符串的第三个位置(即n)开始,第6个位置(即a)结束(不包含)找字符串中有几个‘a’
# 结果:0
2)、寻找字符串中子串的位置
用于寻找字符串中的子串的索引位置,如果有多个以第一个找到为准。结果从0开始,如果没找到返回-1
find(self, sub, start=None, end=None): 从左侧开始找
rfind(self, sub, start=None, end=None): 从右侧开始找
name = 'zhangsan'
name.find('a')
# 结果: 2
name = 'zhangsan'
name.find('saw')
# 结果“: -1
name= 'zhangsan'
name.rfind('a')
# 结果: 6
用于寻找字符串中的子串的索引位置,如果有多个以第一个找到为准。结果从0开始,如果没找到报错
index(self, sub, start=None, end=None): 从左侧开始找
rindex(self, sub, start=None, end=None): 从右侧开始找
name= 'zhang san'
name.index('an')
# 结果:2
name= 'zhang san'
name.rindex('an')
# 结果:7
3)、替换字符串中子串的内容
replace(self, old, new, count=None): 将字符串中的子串替换为另外的子串
name= 'zhang san'
name.replace('a','e')
# 结果: 'zheng sen'
4)、将tab转换成空格,默认一个tab转换成8个空格
expandtabs(self, tabsize=None):
name = 'zhang\tsan'
names = name.expandtabs()
print(names)
# 结果: 'zhang san'
3.2.4.8 字符串编码问题
在python中,字符编码普遍认为是个很麻烦的事情,只要记住unicode是万国码,其他任何其他编码形式想要相互转换编码格式,都需要先解码成unicode,然后再编码成想要转换的编码格式。
将字符串解码为unicode格式
decode(self, encoding=None, errors=None):
将unicode格式的字符串编码为指定的编码格式
encode(self, encoding=None, errors=None):
其他方法:
translate(self, table, deletechars=None) 转换
需要先做一个对应表,最后一个表示删除字符集合
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
print (str.translate(trantab))
# 结果: th3s 3s str3ng 2x1mpl2....w4w!!!
python学习之路-基本数据类型1 变量的概念、数字、字符串的更多相关文章
- Python学习之路2☞数据类型与变量
变量 变量作用:保存状态:说白了,程序运行的状态就是状态的变化,变量是用来保存状态的,变量值的不断变化就产生了运行程序的最终输出结果 一:声明变量 #!/usr/bin/env python # -* ...
- Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算
仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- Python学习之路——pycharm的第一个项目
Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...
随机推荐
- Python学习---Django下的Sql性能的测试
安装django-debug-tools Python学习---django-debug-tools安装 性能测试: settings.py INSTALLED_APPS = [ ... 'app01 ...
- July 28th 2017 Week 30th Friday
If equal affection cannot be, let the more loving be me. 如果没有相等的爱,那就让我爱多一点吧. There is seldom equal a ...
- Asp.net & Aspose.cells 导入
Workbook workBook = new Workbook(this.fuFile.FileContent); Aspose.Cells.Worksheet sheet = workBook.W ...
- video文件格式说明(笔记)
video标签兼容IE8可使用html5media.js,具体demo可以下载文件中的压缩包 移动端兼容参考: http://www.xyhtml5.com/3252.html
- contOS 网络配置
设定VirtualBox虚拟网卡的IP地址(现在设定本地机器网卡IP 192.168.56.1 子网掩码255.255.255.0) 设置虚拟机中的网络设置 在虚拟机中选用host-only网络(注 ...
- Java List详解,面试中应该如何解答关于List的问题
对于面试,我们在介绍Java的List的时候,一般需要介绍到,什么是List?List包括什么?各自在用法上有什么区别,在存储上有什么区别?List需要注意什么?把这些问题串起来,我们可以这样介绍: ...
- android中反射技术使用实例
在计算机科学领域.反射是指一类应用,它们能够自描写叙述和自控制.也就是说,这类应用通过採用某种机制来实现对自己行为的描写叙述(self-representation)和监測(examination), ...
- 【[SDOI2015]约数个数和】
慢慢化柿子吧 要求的是这个 \[\sum_{i=1}^N\sum_{j=1}^Md(ij)\] 神奇的约数个数函数有一个这样的性质 \[d(ij)=\sum_{x|i}\sum_{y|j}[(x,y) ...
- GAutomator,GAutomatorview和Android SDK,Unity配置
1. 安装和配置JDK 环境配置中: JAVA_HOME:E:\Program Files\java\jdk1.8.0_131 Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre ...
- java project如何连接数据库
1,首先从mysql的官网上下载mysql-connector-java-5.1.44.zip 2,选择downloads下的community 3,在Community下选择MySql Connec ...