Python语言程序设计-学习笔记4:Python编程之数据类型

来源:互联网 发布:淘宝双十一数据统计 编辑:程序博客网 时间:2024/06/06 03:27

第三周:Python编程之数据类型

3.1 数字和字符串类型


1.类型的概念

程序设计不允许出现语法歧义;
所以需要明确类型;
常用6中数据类型:
1)数字类型;
2)字符串类型;
3)元组类型;
4)列表类型;
5)文件类型;
6)字典类型;

2.数字类型:

程序元素,010/10存在多种可能;
数字类型对Python语言中的数字的表示和使用进行了定义和规范;
1)整数;
与数学中的整数概念一致,没有取值范围的限制;
如pow(x,y)函数:计算x的y次幂;
(Code3_1)
print(pow(2,15))

log:
32768
猜猜看,如何获得数字长度?

十进制数:10、-21;
十六进制:0x或0X开头的,-0x89;
八进制:0o或0O开头的;
二进制:0b或0B开头的;

2)浮点数;
带有小数点及小数的数字;
Python语言中的浮点数的数值范围存在限制,小数点进度也存在限制,这种限制与不同计算机系统有关;
获取系统浮点数信息;
(Code3_2)
import sysprint(sys.float_info)

log:
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

可以看到,最大值是10的308次方;最小值10的-307次方;精度到小数点后53位;
a:0.0和0不同;
b:96e4,4.3e-3,9.6E5(科学计数法)
    科学计数法使用字母e或E作为幂的符号,以10为基数;
    <a>e<b> = a*(10^b)

3)复数类型;
与数学中的复数概念一致,z = a + bj,a为实数部分,b为虚数部分,a和b都是浮点类型,虚数部分用j或者J标识;(j*j = -1)
对于复数z,可用z.real获得实数部分,z.imag获得虚数部分;

3.数字类型的关系

三种类型存在一种逐渐“扩展”的关系:
    整数->浮点数->复数(整数是浮点数特例,浮点数是复数特例);
不同数据类型的混合运算,运算后生成结果为最宽类型;

三种类型可以互相转换;
函数:int() float() complex();
int(4.5) = 4 #去掉小数部分
float(4) = 4.0 #增加小数部分
complex(4) = 4 + 0j #增加值为零的虚数部分

不支持复数的反方向转换,即不能把虚数使用这种函数的方式转换为整数或浮点数;

数字类型的判断:
使用函数type(x)返回x的类型,适合于所有类型的判断;
print(type(4.5))

log:
<class 'float’>

数字类型的运算:

python还提供了math库,进行更多的数学运算;后续会介绍;

4.字符串数据类型

双引号或单引号括起来的一个或多个字符;
type(“aaa”)  <class ’str’>
Python语言转义符:\;
输出带有引号的字符串,可以使用转义符;如print(“\”大家好!\”")
使用\\可以输出带有转义符的字符串;

字符串是一个字符序列:字符串最左端位置标记为0,依次增加;
字符串中的编号叫做索引;


可以使用单个索引访问字符串中的特定位置;格式如<string>[<索引>]

Python中字符串的索引从0开始,一个长度为L的字符串最后一个字符的位置是L-1;
Python同时允许使用负数从字符串的右边末尾向左进行反向索引,最右端索引值为-1;
此外,也可以通过两个索引值确定一个位置范围内,返回这个范围的字符串子串;
格式如:<stirng>[<start>:<end>]
这里:start和end都是整数型数值,这个子序列从索引start开始直到索引end结束,但不包括end的位置;

字符串之间可以通过+或*进行链接:
1)加法操作+将两个字符串连接成一个字符串;
2)乘法操作*构建一个由其本身字符串重复链接而成的字符串;

len()函数可以返回一个字符串的长度;
大多数数据类型都可以通过str()函数转换为字符串;
(Code3_3)
greet = "Hello world!"print(greet[2])x = 8print(greet[x - 2])print(greet[-1])print(greet[0:3])print("Hello" + "flower")print("huahau"*3)print(len("haahha"))print(str(123))

实现一段代码示例:输入月份数字,返回月份字符串;
(Code3_4)
months = “JanFebMarAprMayJunJulAugSepOctNovDec"list = [1,2,3,4,5,6,7,8,9,10,11,12]def monthConvertToString(month):    if month in list:        monthString = months[((month-1)*3):(month*3)]        return monthString    return "---"def main():    n = input("请输入月份数(1-12):")    print(monthConvertToString(int(n)))main()


5.字符串的操作方法

格式<string>.func()


此外,还可以遍历字符串中的每个字符;
for <var> in <string>:
相关操作方法还有很多;

转义字符可以在字符串中表达一些不可直接打印的信息,如用\n表示换行;

3.2 元组和列表类型

1.元组是包含多个元素的类型,元素之间用逗号分割;

Tuple(元组)
如:t1 = 123,456,”hello”
元组可以是空的,t2 = ()
元组包含一个元素,t3 = 123,
元组外侧可以使用括号,也可以不使用;

元组的三个特点:
1)元组中元素可以是不同类型,也可以是元组,此时作为元素的元组需要加()括号以区分;
2)元组元素之间存在先后关系,可以通过索引访问;
3)元组定义后不能更改,也不能删除;

与字符串类似,可以通过索引区间来访问元组中部分元素,如t[1:]
与字符串类似,元组之间可以使用+和*进行运算;

元组定义后不能修改是为了更加安全,如果想要更改以增加代码的灵活性,可以使用列表;

2.列表类型及其操作

list列表是有序的元素集合;可以使用索引访问;
列表中每个元素类型可以不一样;

与元组不同的是,列表的大小没有限制,可以随时修改;

列表的操作


(Code3_5)
vlist = [1,2,3,4,5]print(vlist * 2)print(len(vlist[3:]))#从索引3开始到末尾for val in vlist[:2]:#到索引2且不包含    print(val)if 2 in vlist:    print("true”)

log:
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
2
1
2
true

列表其他操作:


(Code3_6)
vlist = [0,1,2,3,4]vlist.append('Python')print(vlist)vlist.reverse()print(vlist)print(vlist.index(3))print(vlist.pop(3))print(vlist)

log:
[0, 1, 2, 3, 4, 'Python']
['Python', 4, 3, 2, 1, 0]
2
2
['Python', 4, 3, 1, 0]

字符串可以通过split()函数,将字符串拆分成一个列表;如:”hahaha”.split(“a”)   log:['h', 'h', 'h', '']

3.3 math库、random库和实例


math库包含一批数学函数:




random库包含一批随机函数,生成随机数:


(Code3_7)
from random import *print(random())print(uniform(1,10))print(randint(1,10))print(randrange(1,10,2))ra = [0,1,2,3,4,5,6,7,8,9]print(choice(ra))shuffle(ra)print(ra)print(sample(ra,3))seed(10)print(uniform(1,10))print(uniform(1,10))seed(10)print(uniform(1,10))print(uniform(1,10))#设定相同随机种子 调用随机数函数生成的值是相同的

log:
0.8079332114449371
2.9530059453859883
2
3
5
[2, 1, 5, 4, 0, 3, 8, 7, 9, 6]
[4, 5, 0]
6.142623352209221
4.860001492076032
6.142623352209221
4.860001492076032

设定相同随机种子 调用随机数函数生成的值是相同的
这是因为:
计算机是一个确定设备,他不能生成真正意义上的随机数,由计算机产生的都是伪随机数;
都是从一个种子开始的伪随机序列;
从相同的随机种子开始会产生相同的伪随机序列;

使用python语言计算π:
    π是一个无理数,只能用近似法计算——蒙特卡洛方法(Monte Carlo)
1)单位正方形;
2)随机圆;
3)随机抛洒点;
4)圆内点/正方形面积即为π/4;
处理:
    对于每个抛洒点,计算点到圆心的距离,通过距离判断是在园内还是圆外;统计数量;
(Code3_8)
引入数学库的同时引入time库用于计时;
from random import randomfrom math import  sqrtfrom  time import clockDARTS = 1200hits = 0clock()for i in range(1,DARTS):    x, y = random(), random()    dist = sqrt(x**2 + y**2)    if dist <= 1.0:        hits = hits + 1pi = 4* (hits/DARTS)print("π = %s"%pi)                          #%格式输出是就得方式print("π={}\nTime={}".format(pi,clock()))   #format格式输出函数是新的方式

log:
π = 3.1066666666666665
π=3.1066666666666665
Time=0.054041

3.4 课后练习

字符串操作测验(略)




原创粉丝点击