基本数据类型

3.1数字类型及操作

1.整数类型

与数学中整数的概念一致

可正可负,没有取值范围限制

pow(x,y)函数:计算X的y次方,想算多大算多大

四种进制表现形式

十进制:1010,99,-217

二进制:以0b或0B开头:0b010,-0B101

八进制:以0o或0O开头:0o123,-0O456

十六进制:以0x或0X开头:0x9a,-0X89

整数无限制

2.浮点类型

与数学中实数的概念一致

带有小数点及小数的数字

浮点数取值范围和小数精度都存在限制,但常规计算可忽略

取值范围数量级约-10的308次方至10的308次方,精度数量级10的负16次方。

注意:浮点数间运算存在不确定尾数,不是bug

>>>0.1+0.3

0.4

>>>0.1+0.2

0.3000000000000004

原因:计算机中十进制小数0.1是由53位二进制表示的小数部分,约10^(-16)

二进制表示小数,可以无限接近,但不完全相同

修改:

>>>0.1+0.2==0.3

False

>>>round(0.1+0.2,1)==0.3

True

两个等号在Python中是判断的意思

round(x,d):对x四舍五入,d是小数截取位数

浮点数间运算及比较用round()函数辅助

不确定尾数一般发生在10^(-16)左右,round()十分有效

浮点数可以采用科学计数法表示

使用字母e或者E作为幂的符号,以10为基数,格式如下:

<a>e<b>    表示a*10^(b)

3.复数类型

定义j  与数学中复数概念一致

出现频率较少

4.数字运算操作符

x+y 加,x与y之和

x-y 减,x与y之差

x*y 乘,x与y之积

x/y 除,x与y之商

x//y 整数除,x与y之整数商 10//3结果是3

+x x本身

-y y的负值

x%y 余数,模运算 10%3结果是1

x**y 幂运算,x的y次幂,x^y

二元操作符有对应的增强赋值操作符

xop=y 即x=xopy,其中,op为二元操作符

类型间可进行混合运算,生成结果为“最宽”类型

三种类型存在一种逐渐“扩展”或“变宽”的关系

整数 ->浮点数 ->复数

数字运算函数

abs(x)

绝对值,x的绝对值

divmod(x,y)

商余,(x//y,x%y),同时输出商和余数。例:divmod(10,3)结果为(3,1)

pow(x,y[,z])

幂余,(x**y)%z,[..]表示参数z可省略。例:pow(3,pow(3,99),10000)结果为4587

round(x[,d])

四舍五入,d是保留小数位数,默认值为0

max(X1,X2,,,,,Xn)

最大值

mix(X1,X2,,,,Xn)

最小值

一些以函数形式提供的数值运算功能


int(x)

将x变成整数,舍弃小数部分

float(x)

将x变成浮点数,增加小数部分

complex(x)

将x变成复数,增加虚数部分

3.2实例3:天天向上的力量

基本问题:持续的价值

问题1:1‰的力量

#DayDayupQ1.py

dayup=(1.001,365)

daydown=pow(0.999,365)

print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

问题2:5‰和1%的力量

#DayDayUpQ2.py

dayfactor=0.005

dayup=pow(1+dayfactor,365)

daydown=pow(1-dayfactor,365)

print("向上:{:.2f},向下:{:.2f})"format(dayup,daydown))

问题3:工作日的力量

一年365天,一周5个工作日,每天进步1%

一年365天,一周2个休息日,每天退步1%

#DayDayUpQ3.py

dayup=1.0

dayfactor=0.01

for i in range(365):

      if i % 7 in[6,0]:

          dayup=dayup*(1-dayfactor)

      else:

          dayup=dayup*(1+dayfactor)

print("工作日的力量:{:.2f}".format(dayup))

问题4:工作日的努力

A君:一年365天,每天进步1%,不停歇

B君:一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?

for...in..(计算思维)==>def..while...(“笨办法”试错)

#DayDayUpQ4.py

def dayup(df):

      dayup=1

      for i in range(365):

          if i % 7 in [6,0]:

                dayup=dayup*(1-0.01)

          else:

                dayup=dayup*(1+df) 

      return dayup

dayfactor=0.01

while dayUP(dayfactor)<37.78:

      dayfactor+=0.001

print("工作日的努力参数是:{:.3f}".format(dayfactor))

3.3字符串类型及操作

由0个或多个字符组成的有序字符序列

字符串由一对单引号或一对双引号表示

字符串是字符的有序序列,可以对其;中的字符进行索引

字符串的序号

正向递增序号和反向递减序号

字符串切片高级用法

使用[M:N:K]根据步长对字符串切片

<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾

<字符串>[M:N:K],根据步长K对字符串切片

字符串的特殊字符

转义符\

转义符表示特定字符的本意

转义符形成一些组合,表达一些不可打印的含义

字符串的操作符

由0个或多个字符组成的有序字符序列

操作符及使用

描述

x+y

连接两个字符串x和y

nx或xn

复制n次字符串x

x in s

如果x是s的子串,返回True,否则返回False

获取星期字符串

#weekNamePrintV1.py

weekStr="星期一星期二星期三星期四星期五星期六星期日"

weekId=eval(input("请输入星期数字(1-7):"))

pos=(weekId-1)*3

print(weekStr[pos:pos+3])

字符串处理函数

函数及使用|描述

len(x)|长度,返回字符串的长度

str(x)|任意类型x所对应的字符串形式

hex(x)或oct(x)|整数x的十六进制或八进制小写形式字符串

Unicode编码

python字符串的编码形式

统一字符编码,即覆盖几乎所有字符的编码方式

从0到1114111(0*10FFFF)的空间,每个编码对应一个字符

python字符串中每个字符都是Unicode编码字符

12星座代表字符

for i in range(12):

    print(chr(9800+i),end="")

字符串处理方法

方法及使用

描述

str.lower或str.upper()

返回字符串的副本,全部字符小写/大写

str.split(sep=None)

返回一个列表,由str根据sep被分隔的部分组成

str.count(sub)

返回子串sub在str中出现的次数

str.replace(old,new)

返回字符串str副本,所有old子串被替代为new

str.center(width[,fillchar])

字符串str根据宽度width居中,fillchar可选

str.strip(chars)

从str中去掉在其左侧和右侧chars中列出的字符

str.join(iter)

在iter变量除最后元素外每个元素后增加一个str

字符串类型的格式化

格式化是对字符串进行格式表达的方式

字符串格式化使用.format()方法,用法如下:

<模板字符串>.format(<逗号分隔的参数>)

:              引导符号

<填充>      用于填充的单个字符

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

<宽度>      槽设定的输出宽度

<,>        数字的千位分隔符

<.精度>    浮点数小数精度或字符串最大输出长度

<类型>      整数类型 浮点数类型

3.4time库的使用

time库是python中处理时间的标准库

时间获取:time() ctime() gmtime()

时间格式化:strftime() strptime()

程序计时:sleep(),perf_counter()

函数

描述

time()

获取当前时间戳,即计算机内部时间值,浮点数

ctime()

获取当前时间并以易读方式表示,返回字符串

gmtime()

获取当前时间,表示为计算机可处理的时间格式

时间格式化

将时间以合理的方式展示出来

格式化:类似字符串格式化,需要有展示模板

展示模板由特定的格式化控制符组成

strftime()方法

函数

描述

strftime(tpl,ts)

tpl是格式化模板字符串,用来定义输出效果。ts是计算机内部时间类型的变量

strptime(str,tpl)

str是字符串形式的时间格式化。tpl是格式化模板字符串,用来定义输入效果

程序计时

程序计时指测量起止动作所经历事件的过程

测量时间:perf_counter()

产生时间:sleep()

函数

描述

per_counter()

返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,连续调用差值才有意义

sleep

s拟休眠时间,单位是秒,可以是浮点数

3.5文本计数条

需求分析

采用字符串方式打印可以动态变化的文本进度条

进度条需要能在一行中逐渐变化

问题分析

采用sleep()模拟一个持续的进度

似乎不那么难

“文本进度条”简单开始

#TextProBarV1.py

import time

scale=10

print("------执行开始------")

for i range(scale+1)

    a='*' * 1

    b='.' * (scale-i)

    c=(i/scale)*100

    print("{:^3.0f}%[{}->{}]".format(c,a,b))

    time.sleep(0.1)

print("------执行结束------")

单行动态刷新

#TextProBarV2.py

import time

for i in range(101):

    print("\r{:3}%".format(i),end="")

    time.sleep(0.1)

完整效果

#TextProBarV3.py

import time

scale = 50

print("执行开始".center(scale//2, "-"))

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//2,'

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容