第3章-基本数据类型
1、数据类型
Python中提供了3种数字类型:整数类型、浮点数类型和复数类型
(1)、整数类型
Python中的整数没有取值范围的限制,理论上来讲只要内存能够存储,Python可以使用任意大小的整数。
整数类型有4种进制表示方式:十进制、二进制、八进制、十六进制。默认情况下,采用十进制,如果需要用其他进制需要增加引导符号。
十进制转二进制用bin(十进制数),bin返回值为二进制
十进制转十六进制用hex(十进制数) hex返回值为十六进制
十进制转八进制用oct(十进制数),oct返回值为八进制
任何进制转10进制用int(要转的数字’,当前的进制)
(2)、浮点数类型
- 浮点数表示带有小数的数值,在Python语言中的浮点数必须带有小数部分,小数部分可以是0.比如说27是整数,27.0就是浮点数。
- 浮点数有2种表示形式:十进制表示形式和科学计数法表示形式。浮点数没有其他进制表示形式。
- 科学计数法使用字母e或者E作为幂的符号,以10为基数。比如说:1.02e5表示1.02*10^5
- 浮点数的取值范围和小数精度受不同计算机系统的限制。
- 浮点数的取值范围[-10308,10308]
相同数值的整数和浮点数在进行幂运算时结果不同,两个浮点数相加时存在一个特例:
因为Python语言的浮点数运算存在一个不确定尾数问题。所以0.1+0.2 != 0.3.
可以利用round()函数去解决这个问题round(0.1+0.2 ) == 0.3.
(3)、复数类型
- 复数类型和数学上的复数一致,表示形式不同,在Python用a+bj表示,其中a为实部,b为虚部。当b=1时,不能省略即1j,且j表示一个变量。
-
- 在 Python中,复数虚部通过后缀“J”或“j”来表示。复数类型中实部和虚部都是浮点类型,对于复数z,可以用z.real和 z.imag分别获取实数部分和虚数部分。
a=7372+88989j
print(a.real)
print(a.imag)
"""
运行结果:
7372.0
88989.0
"""
(4)、数值运算操作符
Python提供了9个基本的数值运算操作符
数值运算可能改变结果的数据类型,类型的改变与运算符有关。
规则如下:
- 整数和浮点数混合运算,输出结果是浮点数
- 整数之间运算,产生结果类型与操作符有关,除法(/)运算的结果是浮点数
- 整数或浮点数与复数运算,运算结果是复数
数值运算符与赋值运算符相连组成增强赋值操作符。如:+=、-=、/=、*=、%=、**=,使用增强赋值操作符能够简化对同一变量赋值语句的表达式。
注意事项:属猪运算符与赋值运算符的=之间不能有空格。
(5)、数值运算函数
Python解释器自带的一些内置函数。
(6)、字符串切片
- 切片:指对操作的对象截取其中一部分的操作,字符串、列表、元组都支持切片操作
- 语法:序列[开始位置下标:结束位置下标:步长] ,不包含结束位置下标数据,步长为选取间隔,正负均可,
- 默认为1
(7)、format()方法的介绍
- format()用于格式化方法,即用来控制字符串和变量的显示效果。
- 语法格式:<模板字符串>.format(<逗号分隔的参数>)
- 可以通过format()参数的序号指定参数的使用,参数从0开始编号。
format()方法的槽除了包括参数序号,换可以包括格式控制信息。格式控制标记用来控制参数显示使时的格式。
语法格式:{参数序号:格式控制标记}
用于显示格式的规范:填充、对齐、宽度 - 宽度:指当前槽的设定输出字符宽度,如果实际值比宽度设定的值的大,则使用实际长度,实际宽度小于指定宽度,则按照指定方式在宽度内对齐,默认左对齐以空格字符串填充
- 对齐:默认是左对齐
- 填充:默认是空格字符串填充,填充字符只能有一个
#设置宽度
a="{0:20}".format("计算机二级Python复习")
#设置对齐方式
b="{0:^20}".format("计算机二级Python复习")
#设置填充,符号为-
c="{0:-^20}".format("计算机二级Python复习")
print("a的宽度为",len(a))
print(b)
print(c)
运行结果:
a的宽度为 20
计算机二级Python复习
---计算机二级Python复习----
用于对数值本身的规范:,、.精度、类型
- 逗号(,):用于显示数字类型的千位分隔符
- .精度:由小数点(.)开头,对于浮点数,精度表示小数部分输出的有效位数,对于字符串,精度表示输出的最大长度。如果小数点保留长度超过应输出的长度,一应输出长度为准。
- 类型:表示输出整数和浮点数类型的格式规则
整数类型输出格式:
b:输出整数的二进制方式
c:输出整数对应的Unicode字符
d:输出整数的十进制方式
o:输出整数的八进制
x:输出整数的小写十六进制方式
X:输出整数的大写十六进制方式
浮点数类型输出格式:
e:输出浮点数对应的小写字母e的指数形式
E:输出浮点数对应的大写字母E的指数形式
f:输出浮点数的标准浮点形式
%:输出浮点数的百分比形式
#设置千位分隔符
a="{0:,}".format(2234321)
#设置精度
b="{0:.3},{1:.4}".format("10.33332","计算机二级Python复习")
#设置整数类型格式
c="{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(666)
#设置浮点数类型格式
d="{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(333)
print(a)
print(b)
print(c)
print(d)
运行结果:
2,234,321
10.,计算机二
1010011010,ʚ,666,1232,29a,29A
3.33e+02,3.33E+02,333.00,33300.00%
(8)、字符串类型的操作
- 字符串操作符
- 字符串处理函数(内置函数)
- 字符串处理方法
(9)、类型判断和类型间的转换
Python提供type(x)函数对变量x进行类型判断,适用于任何数据类型。
- 隐式类型转换:
数值运算操作符可以隐式地转换输出结果的数据类型,例如,两个整数采用运算符“/”的除法将可能输出浮点数结果。
- 显示类型转换:
通过类型转换函数可以显示地在数字类型之间进行转换。
浮点数转换为整数类型时,小数部分会被舍弃掉(不使用四舍五入)。整数转换成浮点数类型时,会额外增加小数部分。其中int(x)如果x为“342.34”会报错。
(10)、课后习题
- 选择题
1、以下是八进制数字的是()
A、0b998
B、0a1010
C、0o891
D、0x678
2、以下字符串合法的是()
A、”Java’Python’go”
B、”go’’Java”Python”
C、”go‘’
D、’Java’Python‘’
3、Python程序采用Unicode编码,英文字符和中文字符在Python种分别对应字符的个数是:()
A、1:1
B、1:2
C、2:1
D、2:2
4、以下不是Python内置函数类型的是()
A、char
B、int
C、float
D、list
5、Python支持复数类型,以下说法错误的是()
A、实部和虚部但是浮点数
B、表示复数的语法是real+imag j
C、1+1j是复数
D、虚部后缀j必须是小写形式
6、以下是print(“\nPython”)语句运行结果的是()
A、在新的一行输出:Python
B、直接输出:”\nPython”
C、直接输出:\nPython
D、先输出n,然后新的一行输出Python
7、字符串:s=’abcde’,n是字符串s的长度。索引字符串s字符’c’,哪个语句是正确的?
A、s[n/2]
B、s[(n+1)/2]
C、s[n//2]
D、s[(n+1)//2]
8、以下不是Python内置函数的是:()
A、int()
B、float()
C、len()
D、string()
9、以下能够根据逗号’,’分隔字符串的是:()
A、s.split()
B、s.strip()
C、s.center()
D、s.replace()
10、以下能够同时作用于所有数字类型和字符串类型的函数是:()
A、len()
B、complex()
C、type()
D、bin()
1C
2A
3A
4A
5D
6A
7C
8D
9A
10C
- 编程题
1、 获得用户输入的一个整数,输出该整数百位及以上的数字。
"""
要求获得用户输入的一个整数,输出该整数百位及以上的数字。
"""
#方法1
num = input("请输入一个大于等于100的整数:")
if int(num)<100:
print("请按要求输入!")
else:
print(int(num[:-2]))
#方法2
num = eval(input("请输入一个整数:"))
if num < 100:
print("请输入一个三位数的整数!")
else:
num//=100
print('百位及以上的数字位:{0}'.format(num))
2、 获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
"""
要求获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
"""
strin = input('请输入一段字符串,以空格分开:')
strin1 =strin.split(" ")#split()方法将会返回一个列表
for i in strin1:
print(i)
print(strin1)
3、 程序读入一个表示星期几的数字(1-7),输出对应的是星期字符串。例如:输入3,返!“星期三”。
"""
要求:
程序读入一个表示星期几的数字(1-7),输出对应的是星期字符串。
例如:输入3,返!“星期三”。
"""
while True:
num = eval(input("请输入1-7的数字:"))
if 1<=num<=7:
if num == 1:
print("星期一")
elif num == 2:
print("星期二")
elif num == 3:
print("星期三")
elif num == 4:
print("星期四")
elif num == 5:
print("星期五")
elif num == 6:
print("星期六")
else:
print("星期天")
else:
print("请输入正确!")
4、 设n是一个任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数,请编写程序判断这个数字是不是回文数。
"""
设n是一个任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。
从键盘输入一个5位数,请编写程序判断这个数字是不是回文数。
"""
def is_palindrome(num):
# 将整数转换为字符串
num_str = str(num)
# 判断字符串是否与反转后的字符串相等
if num_str == num_str[::-1]:
return True
else:
return False
# 用户输入整数
num = int(input("请输入一个整数:"))
# 调用函数进行判断
if is_palindrome(num):
print(f"{num} 是回文数")
else:
print(f"{num} 不是回文数")
5、 输入一个十进制整数,分别输出其二进制、八进制、十六进制字符串。
"""
输入一个十进制整数,分别输出其二进制、八进制、十六进制字符串。
"""
num = eval(input("请输入一个十进制整数:"))
print(num,'的二进制数为:',bin(num))
print(num,'的八进制数为:',oct(num))
print(num,'的十六进制数为:',hex(num))