饮水&思源

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、数字类型及操作

1.1整数类型

与数学中整数的概念一致

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

pow(x,y)函数:计算xy,想算多大算多大

>>>1267650600228229401496703205376

4种进制表示形式

十进制:1010,99,-217

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

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

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

1.2浮点数类型

与数学中实数的概念一致

带有小数点及小数的数字

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

取值范围数量级约-10308至10308,精度数量级10-16

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

 >>>0.1+0.2 ==0.3

false

a = 0.1+0.3
print("a=",a)
>>>a= 0.4

 

b = 0.1+0.2
print("b=",b)
>>>b= 0.30000000000000004

不确定尾数

 

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

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

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

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

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

  <a>e<b>   b表示a*10b

例如:4.3e-3  值为0.0043  9.6E5  值为960000.0

 

关于Python浮点数汇总:

  -取值范围和精度基本无限制

  -运算存在不确定尾数,用round()函数辅助。

  -科学计数法表示

1.3复数类型

与数学中复数的概念一致

如果X2=-1,那么X的值是什么?

-定义j=,以此为基础,构建数学体系

-a+bj被称为复数,其中,a是实数,b是虚数

复数实例:

z = 1.23e-4+5.6e+89j

实部是什么?  z.real获得实部

1.4数值运算操作符

  • 操作符是完成运算的一种符号体系
操作符及使用 描述
x+y 加,x与y之和
x-y 减,x与y之差
x*y 乘,x与y之积
x/y 除,x与y之商  10/3结果是3.3333333333333335
x//y 整数除,x与y之整数商  10//3结果是3
+x x本身
-y x的负值

x%y

余数,模运算
x**y

幂运算,x的y次幂,xy

当y是小数时,开方运算 10**0.5结果是: 根号10

  • 二元操作符有对应的增强赋值操作符
增强操作符及使用 描述
x op= y

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

x += y  x -= y  x *= y  x /= y

x //= y  x %= y  x **= y

#示例:
x = 3.1415 x **= 3 #与 x = x **3 等价 print(x) >>>31.006276662836743

1.5.数据类型的关系

  1. 三种类型存在可进行混合运算,生成结果为“最宽”类型。
  2. 三种类型存在一种逐渐“扩展”或“变宽”的关系:

    整数 -> 浮点数 -> 复数

    例如:123 + 4.0 = 127.0 (整数 + 浮点数 = 浮点数)

1.6.数值运算函数

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

函数及使用 描述
abs(x)

绝对值,x的绝对值

abs(-10.01)结果为 10.01

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),1000)结果为 4587

round(x[,d])

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

round(-10.123,2)结果为 -10.12

max(x1,x2, ... ,xn)

最大值,返回x1,x2, ... ,xn中的最大值,n不限

max(1,9,5,4,3)结果为 9

min(x1,x2, ... ,xn)

最小值,返回x1,x2, ... ,xn中的最大值,n不限

max(1,9,5,4,3)结果为 1

int(x)

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

int(123.45) 结果123; int("123") 结果为 123 

float(x) 

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

float(12) 结果12.0; float("1.23") 结果为 1.23 

complex(x) 

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

complex(4) 结果为 4+0j

1.7、小结

  • 整数类型的无限范围及4种进制表示
  • 浮点数类型的近似无线范围、小尾数及科学计算法
  • +、-、*、/、//、%、**、二元增强操作符
  • 函数:abs()、divmod()、pow()、round()、max()、min()、int()、float()、complex()

2、实例:天天向上

  • 实例虽然仅包含8-12行代码,但包含很多语法元素
  • 判断条件循环、次循环、分支、函数、计算思维
  • 清楚理解这些代码能够快速入门Python语言

问题1:1‰的力量

  1. 一年365天,每天进步1‰,累计进步多少呢?
  2. 一年365天,每天退步1‰,累计剩下多少呢?

实例:

DayUp =pow(1.001,365)
DayDown =pow(0.999,365)
print ("向上:{:.2f},向下:{:.2f}".format(DayUp,DayDown))

 

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

  1.  一年365天,每天进步5‰或1%,累计进步多少呢?
  2.  一年365天,每天退步5‰或1%,累计剩下多少呢?

实例:

dayfactor = 0.01    #使用变量的好处:一处修改即可。
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

 

问题3:工作日的力量

  1. 一年365天,一周5个工作日,每天进步1%
  2. 一年365天,一周2个休息日,每天退步1%

实例:

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:工作日的努力

  工作日模式要努力到什么水平,才能与每天努力1%一样?
  A君:一年365天,每天进步1%,不停歇。
  B君:一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?

实例:

#根据df参数计算工作日力量的函数,参数不同,这段代码可共用。
#def保留字用于定义函数
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
dayfacor = 0.01
while dayUP(dayfacor) < 37.78:   # while保留字判断条件是否成立,条件成立时循环执行。
dayfacor += 0.001 print("工作日的努力参数是:{:.3f}".format(dayfacor))

 

3、字符串类型及操作

3.1字符串类型的表示

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

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

      例:"请输入带有符号的温度值:" 或者 'C'

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

      例:"请""请输入带有符号的温度值:"的第0个字符

  • 字符串由2类共4种表示方法:

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

      例:''这里有个双引号(")" 或者 "这里有个单引号(')"

    由一对三单引号或三双引号表示,可表示多行字符串

      例:'''这里既有单引号(')又有双引号(")'''

3.1.2字符串的序号

3.1.3字符串的使用
  • 使用[]获取字符串中的一个或多个字符

    索引:返回字符串中单个字符  <字符串>[M]

      例:"请输入带有符号的温度值:"[0] 或者 TempStr[-1]

    切片:返回字符串中一段字符子串  <字符串>[M:N]

      例:"请输入带有符号的温度值:"[1:3] 或者 TempStr[0:-1]

3.1.4字符串切片的高级用法
  • 使用[M:N:K]根据步长对字符串切片

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

      例:"〇一二三四五六七八九十"[:3] 结果是:"〇一二"

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

      例:"〇一二三四五六七八九十"[1:8:2] 结果是:"一三五七"

        "〇一二三四五六七八九十"[::-1] 结果是:"十九八七六五四三二一〇"

3.1.5字符串的特殊字符
  • 转义符

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

      例:“这里有个双引号(\")” ,结果为:这里有个双引号(")

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

      例:"\b"回退、"\n"换行(光标移动到下行首) 、"\r"回车(光标移动到本行首)

3.2字符串操作符

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

操作符及使用 描述
x + y 连接两个字符串x和y
n * x  或  x * n 复制n次字符串x
x in s 如果x是s的紫川,返回True,否则返回Flase

实例:

#获取星期字符串
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
WeekId = eval(input("请输入星期数字(1~7):"))
pos = (WeekId - 1) * 3
print(weekStr[pos:pos+3])

3.3字符串处理函数

函数及使用 描述
len(x)

长度,返回字符串x的长度

len("一二三456")结果为 6

str(x)

任意类型x所对应的字符串形式

str(1.23)结果为"1.23"str([1,2])结果为"[1,2]"

hex(x)或oct(x)

整数x的十六进制或八进制小写形式字符串

hex(435)结果为"0x1a9"oct(425)结果为"0o651"

chr(u)

u为Unicode编码,但会其对应的字符

ord(x) x为字符,返回其对应的Unicode编码
  • Unicode编码

  Python字符串的编码方式

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

  从0到1114111(0x10FFF)空间,每个编码对应一个字符

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

实例:

# 输出星座图标
" 1 + 1 = 2 " + chr(10004)
"这个字符♉的Unicode值是:" + str(ord(""))
for i in range(12):
    print(chr(9800 + i ),end="")

>>>♈♉♊♋♌♍♎♏♐♑♒♓

3.4字符串处理方法

"方法"在编程中是一个专有名词

  "方法"特指<a>.<b>()风格中的函数<b>()

  方法本身也是函数,但与<a>有关,<a>.<b>()风格使用

  字符串及变量也是<a>,存在一些方法

一些以方法形式提供的字符串处理功能

方法及使用1/3 描述
str.lower()或str.upper()

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

"AbCdEfGh".lower()结果为 "abcdefgh"

str.split(sep=None)

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

"A,B,C".split(",")结果为 ["A","B","C"]

str.count(sub)

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

"a apple a day".count("a")结果为 4

方法及使用2/3 描述
str.replace(old,new)

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

"python".replace("n","n123.io") 结果为 "python123.io"

str.center(width[,fillchar])

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

"python".center(20,"=")结果为 "=======python======="

方法及使用3/3 描述
str.strip(chars)

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

"= python=".strip(" =np")  结果为 "ytho"

str.join(iter)

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

",".join("12345") 结果为 "1,2,3,4,5"  #主要用于字符串分隔等

 3.4.1字符串类型的格式化

  • format()方法的格式控制

    槽内部对格式的化配置方式

    {<参数序号>:<格式控制标记>}

3.5小结

  • 正向递增序号、反向递减序号、<字符串>[M:N:K]
  • +、*、len()、str()、hex()、ord()、chr()
  • .lower()、upper()、.split()、.count()、.replace()
  • center()、strip.()、join.()、.format()

4、模块:time库的使用

time库包括三类函数

  • 时间获取:time()、ctime()、gmtime()
  • 时间格式化:strftime()、strptime()
  • 程序计时:sleep()、perf_counter()

1、时间获取

函数 描述
time()

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

>>>time.time() 
151.6939876.6022282
 ctime()

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

>>>time.ctime()
'Fri Jan 23 17:15:26 2018'
 gmtime()

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

>>>time.gmtime()
time.struct_time(tm_year=2018,tm_mon=1,tm_mday=26,
tm_hour=4,tm_min=11,tm_sec=16,tm_wday=4,tm_yday=26,tm_isdst=0)

 

2、时间格式化

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

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

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

    -strftime()方法

    -strptime()方法

函数  描述
strftime(tpl,ts)

tpl是格式化模版字符串,用来定义输出效果

ts是计算机内部时间类型变量

>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2018-05-23 17:48:20'
strfptime(str,tpl)

 

tpl是格式化模版字符串,用来定义输出效果

 

str是计算机内部时间类型变量

 

>>>timeStr = '2018-05-23 20:29:20'
>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018,tm_mon=1,
tm_mday=26,tm_hour=4,tm_min=11,tm_sec=16,
tm_wday=4,tm_yday=26,tm_isdst=0)
 

 

格式化字符串  日期/时间说明  值范围和实例
%Y  年份 0000~9999,例如:1900
%m  月份 01~12,例如:10
%B  月份名称 January~December,例如:April
%b  月份名称缩写 Jan~Dec,例如:Apr
%d  日期 01~31,例如:25
%A  星期 Monday~Sunday,例如:Wednesday
%a  星期缩写 Mon~Sun,例如:Wed
%H  小时(24h制) 00~23,例如;12
%h  小时(12h制) 01~12,例如:7
%p  上/下午 AM,PM,例如:PM
%M  分钟 00~59,例如:26
%S  秒 00~59.;例如:26

3、程序计时

  程序计时指应用广泛

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

    -测量时间:perf_counter()

    -产生时间:sleep()

函数  描述
perf_counter()

 返回一个CPU级别的精准时间计数值,单位为秒

由于这个计数值起点不确定,连续调用差值才有意义

>>>start = time.perf_counter()
318.66599499718114
>>>end = time.perf_counter()
341.3965185375658
>>>end - start
22.724523540384666
sleep(s)

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

>>>def wait():
       time.sleep(3.3)        
>>>wait()   #程序将等待3.3秒后再退出

5、实例:文本进度条

 

方法论

 

实践能力

posted on 2018-06-13 15:54  饮水&思源  阅读(2229)  评论(0编辑  收藏  举报