一、数值类型
数值类型在Python中有整数型(int)、浮点数型(float)和复数型(complex)三种,整数和浮点数在Python中可自由转换,但浮点数转为整数后无法再次转为原浮点数,复数与其他两个类型均可进行数学运算。
代码(注:因为print中加入了字符串类型,无法进行相加,因此使用str()强制转型):
x = int(3)
y = float(3.5)
print("整数:"+str(x))
print("浮点数:"+str(y))
# 整数转浮点数
print("整数转浮点数:"+str(float(x)))
# 浮点数转整数
print("浮点数转整数:"+str(int(y)))
# 整数转浮点数再转整数
print("整数转浮点数再转整数:"+str(int(float(x))))
# 浮点数转整数再转浮点数
print("浮点数转整数再转浮点数:"+str(float(int(y))))
运行结果:
1、整数类型(int)
整数类型在Python中一般使用int()定义,如整数使用引号包裹,可以使用int(str)进行强制转型,但除了数值型的字符串无法转型为int类型
可以使用int函数进行定义一个整数,如:int(1)
2、浮点数类型(flow)
浮点数类型在Python中一般使用float()定义,如整数使用引号包裹,需要修改为浮点数类型,可以使用float(str)进行强制转型,但除了数值型和浮点数型的字符串无法转型为float类型
可以使用float函数进行定义一个浮点数,如:float(3.14)
3、复数类型(complex)
复数类型在Python中一般表现形式为a+bj,其中a为实部,b为虚部,j或者J为虚数单位,复数也可进行数学运算,与整数、浮点数均可进行数学运算
在Python中,可以使用complex函数来创建一个复数,如:x = complex(1, 2)
Python使用real方法获取实部,imag方法获取虚部
如:x.real获取实部,x.imag获取虚部
总结:
数值类型在python中可自由转换,但仅限于数值类型,字符串无法进行数值转换,各数值类型均可相互进行数学运算。
二、布尔类型
在Python中,布尔类型一般使用0和1表示,布尔类型是 int 类型的扩展,只有 True 与 False 两种取值: True为真、False为假,一般情况下布尔类型在判断中使用偏多,一般情况下if和while中使用偏多。
一般情况下,布尔类型适用于表达式的比较,如:大小、是否等于、是否存在等。
代码:
x = 1
y = 0
#判断x是否为1,如果为1则输出True
if x:
print("True")
else:
print("False")
while x:
print("True")
break
#判断y是否为0,如果为0则输出Flase
if y:
print("True")
else:
print("False")
#无输出则表明y为0
while y:
print("True")
break
运行结果:
在Python中有提供bool()方法,用于输出表达式的布尔值。
总结:
布尔类型(bool)在Python中多用于判断使用,并只有True和Fease两种表达形式,在编写代码时不建议使用while True或者while 1进行判断,可能会导致无限循环,而出现不可逆的错误。
三、字符串(str)
在Python中一般情况下不管字符长度为多少,默认都为字符串,字符串可进行加减乘等数学运算,也可与整数进行相应的计算,但不可与浮点数进行数学运算。
字符串的转换方法:str() 该方法可将其他类型转换为字符串类型
字符串在Python中有多种内置函数,可计算字符串长度,进行部分的转换等。
1、字符串的创建
一般使用单引号,双引号和三引号进行创建,不管有多少字符都默认为字符串。
如:'这是一个字符串'、"这是一个字符串"、"""这是一个字符串"""
2、字符串拼接
Python中,两个字符串进行加法运算表达为字符串的拼接。
如:print("这是一个字符串"+"这也是一个字符串")
输出结果为:这是一个字符串这也是一个字符串
3、字符串索引
字符串也可以使用下标进行类似于数组的索引,每个字符串起始下标默认从0开始。
使用方法:字符串[下标],若下标超出 s 的长度则报错。
注意:字符串不可使用下标进行新增。
4、字符串切片
如果你需要从字符串中取出一部分子字符串,可以使用切片实现,字符串切片起始下标默认从 0 开始。
结束下标默认为左闭右开,即结束下标为长度+1
如不写结束下标,默认到字符串最后一位
如开始下标和结束下标都不写,默认输出全部字符
结束下标不可超过字符长度+1
步长不写默认从1开始,步长不可超过字符长度,步长不可为浮点数
使用方法:字符串[起始下标:结束下标:步长]
5、自带字符串方法及描述
方法 | 描述 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
count(str, beg= 0, end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个 ValueError 的异常,除非 errors 指定的是 'ignore' 或者 'replace' |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 suffix 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 True,否则返回 False。 |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。 |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回 -1 |
index(str, beg=0, end=len(string)) | 跟 find() 方法一样,只不过如果 str 不在字符串中会报一个异常。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True,否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
lower() | 转换字符串中所有大写字符为小写. |
lstrip() | 截掉字符串左边的空格或指定字符。 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
replace(old, new [, max]) | 把将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用 fillchar(默认空格)填充至长度 width 的新字符串 |
rstrip() | 删除字符串末尾的空格或指定字符。 |
split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
translate(table, deletechars="") | 根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
upper() | 转换字符串中的小写字母为大写 |
zfill(width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
表数据来源:菜鸟教程
四、Python程序设计(人民邮电出版社)49页实训
1、按照下列要求修改、运行并调试【例2.1】中的程序
输入表达式格式为(....)x,x=2,8,16,将x进制转换为相应的十进制数
代码:
str1 = input("请输入表达式(....)x:")
p1 = str1.find("(")
p2 = str1.find(")")
jz = str1.split(")")[1].split(",")
lens = len(str1)
if not(p2>p1 and p2+1<lens):
print("输入错误")
else:
es = str1[p1+1:p2]
for i in jz:
if i == '2':
n = bin(int(es))
x = eval(n)
elif i == '8':
n = oct(int(es))
x = eval(n)
elif i == 'h':
n = hex(int(es))
x = eval(n)
print(es,"对应",i,"进制为:",n,"对应的十进制为:",x)
运行结果:
2、按照下列要求修改、运行并调试【例2.3】中的程序
(1)采用正则表达式在公司联系方式中获得移动电话号码
(2)不采用正则表达式在公司联系方式中获得固定电话号码
代码:
import re
info = '''本公司的联系方式:
固定电话:025-8541239x,
移动电话:1385151613x,
QQ:95845696x,
泰州分公司:0523-661231x,'''
print(info)
pattern = re.compile(r'(\d{3,4})-(\d{7,8})')
index = 0
result = pattern.search(info,index)
if result:
print('匹配内容:',result.group(0),\
'在',result.start(0),'和',result.end(0),'之间:',result.span(0))
print('匹配内容:', result.group(1), \
'在', result.start(0), '和', result.end(0), '之间:', result.span(1))
print('匹配内容:', result.group(2), \
'在', result.start(0), '和', result.end(0), '之间:', result.span(2))
# (1)采用正则表达式在公司联系方式中获得移动电话号码
phone = re.findall(r'移动电话:(.*?),',info)[0]
print('移动电话号码:',phone)
# (2)不采用正则表达式在公司联系方式中获得固定电话号码
x = info.split('固定电话:')[1].split(',')[0]
print('固定电话:',x)
运行结果: