python基础003----标准数据类型
一、标准数据类型
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要开发者主动去说明它的类型,系统会自动识别。可以用type(变量名)来查看变量的类型。常见的变量类型如下:
Python3 的六个标准数据类型中:
-
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
二、变量的赋值方式
- 传统赋值:name="geqian"-------注:变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误
- 链式赋值:name=user="geqian"
- 序列解包赋值:name,age="geqian",20 -----注意:两边的常量和变量要对等。
三、数字数据类型
1、Python 支持三种不同的数值类型:
- 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。可以使用十六进制和八进制来代表整数。如:number = 0xA0F # 十六进制
- 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
- 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
注:数据类型是不允许改变的,如果改变数字数据类型的值,将重新分配内存空间。
2、数字类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
-
int(x) 将x转换为一个整数。
-
float(x) 将x转换到一个浮点数。
-
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
-
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
注:查看数据类型使用type(变量名),也可通过运算改变数字类型。如:type(3/2)
3、数字类型运算
注:不同类型的数混合运算时会将整数转换为浮点数
4、常见数
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) |
返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。 其实准确的说是保留值将保留到离上一位更近的一端。 |
sqrt(x) | 返回数字x的平方根。 |
四、字符串类型
1、字符串类型概述
(1)引号
通常使用引号( ' 或 " )来创建字符串。单引号和双引号都是字符串的标准格式,只是为了区分英语中的一些语义。python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。如下:
(2)访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串。如下:
2、转义字符
python用反斜杠(\)转义字符,将字符串中的具有特殊含义的字符的特殊含义取消掉和续行。
3、字符串格式化
例如:
4、f-String格式化
f-string 是 python3.6 之后版本添加的,f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
5、字符串内建函数
(1)查找
代码实例:
string_test='hello world' #查找 print("o的个数为:",string_test.count('o',0,len(string_test))) #len(string_test)判断字符串的长度 print("o的个数为:",string_test.count('o')) #指定首尾位置可省略 print("第一个o的索引为:",string_test.find('o',0,len(string_test))) print("从右边查找第一个o的索引为:",string_test.rfind('o',0,len(string_test))) print("index查找第一个o的索引为:",string_test.index('o',0,len(string_test))) print("index从右边查找第一个o的索引为:",string_test.rindex('o',0,len(string_test))) print("index与find的不同点:find查询不到时返回-1",string_test.find('a',0,len(string_test))) #print("index与find的不同点:index查询不到时,报异常",string_test.index('a',0,len(string_test)))
输出结果:
(2)分割和替换
代码实例:
string_test='hello world' #分割 print('以第一个l分割字符串为:',string_test.partition('l')) print('以从右边开始第一个l分割字符串为:',string_test.rpartition('l')) print('以l为分隔符截取字符串为:',string_test.split('l',string_test.count('l')),'-----截取后的元素列表中不包含l') print('以不存在的字符串为分隔符截取字符串,不进行截取:',string_test.split('a',0)) str_test='welcome\n to\r my\r\n home\n' print('按换行符分割,true保留换行符:',str_test.splitlines(True)) #注意True的大小写 print('按换行符分割,false不保留换行符,默认为false:',str_test.splitlines(False)) #替换 print('将字符串中的l替换成k:',string_test.replace('l','k')) print('将字符串中的o替换成a,替换次数不超过2:',string_test.replace('l','k',2))
输出结果:
(3)字符串变形
代码实例:
str3='hello Cherry,I am Alice! \t Nice to meet you in Street1908 !' #变形 print('将字符串中的小写字母转换为大写:',str3.upper()) print('将字符串中的大写字母转换为小写:',str3.lower()) print('将字符串中的大小写字母互换:',str3.swapcase()) print('将字符串标题化--所有单词首字母大写:',str3.title()) print('将字符串首个字符大写:',str3.capitalize()) print('将字符串中的制表符换为空格,默认8个:',str3.expandtabs(50))
运行结果:
(4)修饰
代码实例:
#修饰 str=' #hello# ' print('指定长度居中对齐,默认空格填充:',str.center(20)) #注意:如果传入的大小小于字符串长度,字符串不变 print('指定长度居中对齐,设置星号填充:',str.center(20,'*')) print('指定长度左对齐,默认空格可设置:',str.ljust(20,'-')) print('指定长度右对齐,默认空格可设置:',str.rjust(20,'=')) print('指定长度右对齐,默认零不可设置:',str.zfill(20)) #只能用0填充 print('删除字符串两边的空格,默认为空格:',str.strip()) print('删除字符串两边的h# ,可设置字符:',str.strip('h# ')) #只能删除首尾,不能删除中间的空格和字符 print('删除字符串右边的h# ,默认为空格:',str.rstrip('h# ')) #并非按字符串进行删除,而是按照字符一个一个删除
print('删除字符串左边的h# ,默认为空格:',str.lstrip('h# ')) str1='{}{}{} ' print('按照顺序将后面的参数传递给前面的大括号:',str1.format(str,str,str)) #参数个数要与大括号个数一致,否则报错
输出结果:
(5)判断
代码实例:
#判断 str3='hello Cherry,I am Alice! \t Nice to meet you in Street1908 !' print('判断字符串是否完全由字母或数字组成:',str3.isalnum()) print('判断字符串是否完全由字母组成:',str3.isalpha()) print('判断字符串是否完全由数字组成:',str3.isdigit()) print('判断字符串的字母是否都是大写:',str3.isupper()) print('判断字符串的字母是否都是小写:',str3.islower()) print('判断字符串是否标题化:',str3.istitle()) print('判断字符串是否全是空格:',str3.isspace()) print('判断字符串是否以hello开头',str3.startswith('hello')) #可指定范围 print('判断字符串是否以Street1908结束',str3.endswith('!')) #可指定范围
运行结果:
6、字符串内建函数附录:
操作 |
字符串函数 |
函数描述 |
查找 |
count(str,beg=0,len(string)) |
返回 str 在 string 里面出现的次数,如果 beg 或者 end 有值则返回指定范围内 str 出现的次数 |
find(str, beg=0, len(string)) |
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
|
rfind(str, beg=0,len(string)) |
类似于find(),不过是从右边开始. |
|
index(str,beg=0,len(string)) |
跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
|
rindex(str,beg=0, len(string)) |
类似于 index(),不过是从右边开始. |
|
分割 |
partition(str) |
将字符串以str分割成三部分:str前、str、str后 |
rpartition(str) |
类似于partition (),不过是从右边开始. |
|
splitlines([keepends]) |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符 |
|
split(str, string.count(str)) |
以 str 为分隔符截取字符串,如果 num= string.count(str) 有指定值,则仅截取 num+1 个子字符串。str不存在,则返回完整的元素列表。 |
|
替换 |
replace(old, new [, max]) |
将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
变形 |
upper() |
转换字符串中的小写字母为大写. |
lower() |
转换字符串中所有大写字符为小写. |
|
swapcase() |
将字符串中大小写互换 |
|
title() |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写 |
|
capitalize() |
将字符串的第一个字符转换为大写 |
|
expandtabs(tabsize=8) |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 |
|
修饰 |
center(width, fillchar) |
返回一个指定的宽度居中的字符串,fillchar 为填充的字符,默认为空格。 |
ljust(width[, fillchar]) |
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
|
rjust(width,[, fillchar]) |
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
|
zfill (width) |
返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
|
format(str1,str2) |
按照顺序将后面的参数传递给前面的大括号 |
|
strip([chars]) |
在字符串上执行 lstrip()和 rstrip() |
|
rstrip() |
删除字符串末尾的空格或指定字符. |
|
lstrip() |
删除字符串左边的空格或指定字符。 |
|
判断 |
isalnum() |
如果字符串完全由字母或数字组成,则返回 True,否则返回 False |
isalpha() |
如果字符串完全由字母组成,则返回 True, 否则返回 False |
|
isdigit() |
如果字符串完全由数字组成,则返回 True 否则返回 False |
|
isupper() |
如果字符串中的字母都是大写,则返回 True,否则返回 False |
|
islower() |
如果字符串中的字母都是小写,则返回 True,否则返回 False |
|
istitle() |
如果字符串是标题化的,则返回 True,否则返回 False |
|
isspace() |
如果字符串中只包含空格,则返回 True,否则返回 False. |
|
startswith(str, 0,len(string)) |
检查字符串是否以str 开头,是则返回 True。可检查指定范围内是否以str开始。 |
|
endswith(str,0, len(string)) |
检查字符串是否以str结束,是则返回 True。可检查指定范围内是否以str结束。 |
7、练习题
要求:
计算BMI(身体质量指数)=体重(公斤)/身高的平方(米)。当输入体重和身高时,可以计算BMI值,并判断体重等级。小于18.5,太轻;小于24,正常;大于等于24,肥胖。
代码实例:
#练习:计算BMI(身体质量指数)=体重(公斤)/身高的平方(米) name=input('请输入你的名字:') weight=input('请输入你的体重:') high=input('请输入你的身高:') BMI=float(float(weight)/(float(high)**2)) print('%s的身高质量指数为:%.2f'%(name,BMI)) if BMI <18.5: print('%s,你的体重太轻了,要认真吃饭哦'%(name)) elif BMI <24: print('%s,你的体重正常,真的是魔鬼身材,要好好保持哦!'%(name)) else: print('%s,你的体重超标了,该减肥了哈哈!'%(name))
运行结果: