python-数据类型【数字、字符串、元组、列表、math库、random库、time库】

一、数字类型

1、整数类型 

pow(x,y)计算x的y次幂(python的整数没有限制范围)

①十进制

②二进制  0b/0B开头

③八进制  0o/0O开头

④十六进制 0x/0X开头

 

2、浮点数类型

float

浮点数减运算存在不确定位数,不是bug

浮点数减运算及比较用      round(x,d)  对x四舍五入,d是小数点位数

print(0.1+0.2) ##0.30000000000000004

##round(x,d)对x四舍五入,d是小数点位数
print(round(0.1+0.2,1))  ##0.3  

科学计数法 :4e-3 :0.004

 

3、复数类型

z=a+bj,a是整数,b是虚数,a、b都是浮点类型,虚数用j或J标识

z.real ----- 获得复数的实数部分

z.image------- 获得复数的虚数部分

 

4、扩展关系

整数--->浮点数---->复数

混合运算结果为最宽类型【比如:整数+浮点数=浮点数】

 

5、三种数字类型互相转换

int()

float()

complex()  ,复数不能直接转换成整数和浮点数

 

6、判断数字类型

type()

 

7、运算符

 

 

 

 

 

 8、实例

def dayup(df):
    days = 1
    for i in range(364):
        if i % 7 in[6,0]:
            days = days*(1-0.01)
        else:
            days = days*(1+df)
    return days
df = 0.01
while dayup(df)<pow(1.01,365):
    df += 0.001
print('工作日的努力参数是:{:.3f}'.format(df))

  

 

二、字符串类型

1、单引号、双引号标识单行字符串

     三单引号、三双引号标识多行行字符串

#字符串中包含单引号或双引号
print('ddf"ddd"') #ddf"ddd"
print("ddf'ddd'") #ddf'ddd'
#字符串中包含单引号和双引号 print('''ddf'ddd',"hhh"''') #ddf'ddd',"hhh"  

2、转义符:\

\n  换行符

3、字符序列

  ①索引    <string>[3],索引从【0 --> len(str)-1】,反向索引<string>[-1]

  ②子序列  <string>[0:3],不包括3的位置

  ③切片<string>[N:M:K],N开头,M结尾,K为步长

str = '零一二三四五六七八九十'
print(str[:3])  ##零一二
print(str[5:])  #五六七八九十
print(str[1:8:2])  #一三五七
print(str[::-1])  #十九八七六五四三二一零

字符串逆序 : str[::-1]

4、【+】两个字符串连接成一个新的字符串

       【*】本身字符串重复链接

str1 = 'abcd'
str2 = 'lala'
print(str1+str2)  #abcdlala
print(str1*2)  #abcdabcd
weekStr = '一二三四五六七'
weekId = eval(input('请输入星期数字(1-7):'))  ##input输入的是字符串用eval去掉引号变成数字
print('星期'+weekStr[weekId-1])  

5、len()--返回字符串长度

6、str()--转换为字符串

 

7、例子

 

months = "JanFebMarAprMayJunJulAugSepOctNovDec"
n = input("请输入月份:")
pos = (int(n)-1)*3
# print("月份名称缩写为:{}".format(months[pos:pos+3]))
print("月份名称缩写为:"+months[pos:pos+3])

 

print(chr(10004))  #✔
for i in range(12):
    print(chr(9800 + i),end='') #星座字符 ♈♉♊♋♌♍♎♏♐♑♒♓

    

8、字符串操作方法

 

 

 

 

8、字符串格式化  .format(<参数序号>:<格式控制标记>)

格式控制标记:

   ①填充  

   ②对齐,< 左对齐,> 右对齐,^ 居中

   ③宽度

print('{:=^20}'.format('BJYX'))  ##========BJYX========

print('{:*>20}'.format('BJYX'))  ##****************BJYX

 ④<,> 数字千位分隔符

   ⑤<.精度>

   ⑥类型  整数:b,c,d,o,x,X       浮点数:e,E,f,%

print('{:,.2f}'.format(23456.6789))  ##23,456.68

  

三、元组类型  

※元组是包含多个元素的类型,元素间用逗号分割

    t1 = (123,355,'hhh')

※元组可以是空的 t2 = ()

※元组可以只有一个元素 t2 =(123,),一个元素的元组要加逗号,不然则不是元组

※元组可以使用括号,也可以不使用

1、特点

※元组中的元素可以是不同类型,元组中也可以包含元组元素,但要加  ( )  进行区分

   t3  = 123,345,("哈哈哈",123)

※索引访问元组元素   t3[0],t3[0:4]

※元组定义后不能更改和删除!!!

※元组可以使用 +、*

 

四、列表类型(list)

可以增删操作

list元素可包含 数字、字符串、布尔、列表

1、列表的操作

 

vlist = [0,1,2,3,4]
print(vlist*2)  #[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
print(vlist[2:])  #[2, 3, 4]
print(len(vlist[3:]))  ##2

for i in vlist[:3]:
    print(i)

if 2 in vlist:
    print("yes")
else:
    print("no")

 

 

 

vlist = [0,1,2,3,4]
vlist.append('python') #[0, 1, 2, 3, 4, 'python']
print(vlist)

vlist.reverse()
print(vlist)  #['python', 4, 3, 2, 1, 0]

print(vlist.index(3)) #2

print(vlist.pop(3),vlist)  #2 ['python', 4, 3, 1, 0]

 

2、split()函数:将字符串拆分成列表

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

str='啦啦啦 \n哈哈哈 呼呼 \n呼哈'
print(str.split( )) # 以空格为分隔符,包含 \n,['啦啦啦', '哈哈哈', '呼呼', '呼哈']
print(str.split(' ', 1 )) # 以空格为分隔符,分隔成两个,['啦啦啦', '\n哈哈哈 呼呼 \n呼哈']

 

3、list索引

从  vlist[0]  ----->   vlist[-1]  或   vlist[len(vlist)-1]

超出索引范围,报错IndexError

 

五、math库

 

 

 

 

六、random库

生成随机数

 

 

from random import *
print(random()) #随机生成一个0-1的小数
print(uniform(0,10))  #随机生成一个0-10的小数
print(randint(0,10))  #随机生成一个0-10的整数
print(randrange(0,10,2))  #随机生成一个0-10,以2递增的整数
vlist = [0,1,2,'lala','haha',6,7]
print(choice(vlist)) #在列表中随机选一个数
shuffle(vlist)  #随机改变列表的顺序
print(vlist)
print(sample(vlist,4)) #在列表中随机采样4个元素

###随机种子
seed(10)
print(uniform(0,10))  #5.714025946899135
print(uniform(0,10))  #4.288890546751146

seed(10)
print(uniform(0,10))  #5.714025946899135
print(uniform(0,10))  #4.288890546751146
##设置相同的随机种子,产生的随机数相同

 

七、time库

import time

1、时间获取

 

 2、时间格式化

 

 

 3、程序计时

 

 

 

 

  

八、案例,计算Π(蒙特卡罗方法-撒点方法)

# pi.py
from random import random
from math import sqrt ##开方
from time import perf_counter #程序计时
DARTS = 120000 ##抛撒点的总数量
hits = 0 ##在圆内点的数量
start = perf_counter()
for i in range(1,DARTS):
x, y = random(), random()
dist = sqrt(x**2 + y**2) ## pow(x**2 + y**2,0.5)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi的值是 %s" % pi)
print("程序运行时间是 {:5f}s" .format(perf_counter()-start))

  

练习题

#字符串组合输出
str1 = input('请输入一个人的名字:') str2 = input('请输入一个国家的名字:') print('世界那么大,{}想去{}看看'.format(str1,str2))

 

N = input('请输入一个正整数N:')
s = 0
for i in range(int(N)):
    s += i+1
print('1-N求和结果为'+s)

  

#九九乘法表
for i in range(1,10):
    for j in range(1,1+i):
        print("{}*{}={:2}  ".format(j,i,i*j),end='')
    print('')

  

s = 0
for i in range(1,11):
    t = 1
    for j in range(1,1+i):
        t= t * j
    s = s+t
print('1+2!+...+10!的运算结果是:{}'.format(s))

s,t = 0,1
for i in range(1,11):
    t *= i
    s += t
print('1+2!+...+10!的运算结果是:{}'.format(s))

  

 

 

##猴子吃桃问题
s = 1
for i in range(1,6):
    s = (s + 1)*2
print(s)

n=1
for i in range(5,0,-1):
    n = (n+1)<<1
print(n)

  

##食谱搭配
diet = ['西红柿','豆角','黄瓜','虾仁','玉米']
for x in range(0,5):
    for y in range(0,5):
        if not(x==y):
            print("{}{}".format(diet[x],diet[y]))

  

##绘图
from turtle import  *
color('red','yellow')
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

  

#单行动态刷新
import time
for i in range(11):
    print('\r{:3}%'.format(i),end='')##end=''不换行,\r会到行首
    time.sleep(0.2)

 

#文本进度条
import time
scale = 50
print('执行开始'.center(scale,'-'))
start = time.perf_counter()
for i in range(scale+1):
    a = '*'*i
    b = '.'*(scale-i)
    c = (i/scale)*100
    dur = time.perf_counter() - start  #计算程序运行时间
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    time.sleep(0.1)
print('\n'+'执行结束'.center(scale,'-'))

  

  

 

 

  

 

posted @ 2019-09-22 19:22  kuluma  阅读(642)  评论(0编辑  收藏  举报