基本数据类型

一、数字类型及操作

1.整数类型(与数学中整数的概念一致)

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

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

eg:>>>pow(2,100)       2的100次    1267650600228229401496703205376

     >>>pow(2,pow(2,15))     2的2的15次方    1415461031044954789001553

(3)四种进制表示形式

十进制:1010,99,-217

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

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

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

2.浮点数类型(与数学中实数的概念一致)

(1)带有小数点及小数的数字

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

(3)取值范围数量级约-10的308次至10的308次,精度数量级10的负16次

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

eg:>>>0.1+0.3

0.4

>>>0.1+0.2

0.30000000000000004   (加粗部分即不确定尾数)

(4)round函数

>>>0.1+0.2

False

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

Ture

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

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

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

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

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

                           e   表示a*10的b次

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

3.复数类型(只有python语言提供此类型,常用于空间变换,与数学中复数的概念一致)

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

z.real获得实部

z.imag获得虚部

4.数值运算操作符

(1)操作符是完成运算的一种符号体系。

 操作符及使用                                  描述

       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                                       y的 负值    

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

       x**y                                   幂运算,x的y次幂(当y是小数时,开方运算10**0.5结果为根号10)

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

增强操作符及使用                         描述

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

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

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

                                                 >>>x=3.1415

                                                 >>>x**=3             #与x=x**3等价

                                                 31.006276662836743

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

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

整数<浮点数<复数(整数是浮点数的特殊形式   浮点数是复数的特殊形式

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

5.数值运算函数

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

            函数及使用                                   描述 

               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),10000)结果为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不限 

                                                   min(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

 (后三个函数可相互转化)

二.天天向上的力量

基本问题:持续的价值

第一问:千分之一的力量

#DayDayUpQ1.py

dayup=pow(1.001,365)

daydown=pow(0.999,365)

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

                                                                   编写上述代码,并保存为DayDayUpQ1.py文件

>>>(运行结果)

向上:1.44,向下:0.69

第二问:千分之五和百分之一的力量

#DayDayUpQ2.py                                                    使用变量的好处:一处修改即可

dayfactor=0.005

dayup=pow(1+dayfactor,365)

daydown=pow(1-dayfactor,365)

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

编写上述代码,并保存为DayDayUpQ2.py文件

>>>(千分之五运行结果)                                   >>>(百分之一运行结果)

向上:6.17,向下:0.16                                 向上:37.78,向下:0.03

第三问:工作日的力量(一周五天工作即进步,两天休息即退步)

#DayDayUpQ3.py

dayup=1.0

dayfactor=0.01                                                              for···in···(计算思维)

for i in range(365):

    if i % 7 in [6,0]:

         dayup=dayup*(1-dayfactor)                               采用循环模拟365天的过程

    else:                                                                                  抽象+自动化

         dayup=dayup*(1+dayfactor)

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

>>>(运行结果)

工作日的力量:4.63

第四问:工作日的努力

-工作日模式要努力到什么水平,才能与每天努力1%一样?

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

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

#DayDayUpQ4.py

def dayUP(df):

      dayup=1

      for i in range(365):                                          根据df参数计算工作日力量的函数参数不同, 

           if i % 7 in[6,0]:                                                              这段代码可共用 

                dayup=dayup*(1-0.01)                                   def保留字用于定义函数

          else:                                                                   while保留字判断条件是否成立 

               dayup=dayup*(1+df)                                             条件成立时循环执行

     return dayup

dayfactor=0.01

while dayUP(dayfactor)<37.78

      dayfactor+=0.001

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

>>>(运行结果)

工作日的努力参数是:0.019

三.字符串类型及操作

1.字符串类型的表示

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

(1)字符串有2类共4种表示方法

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

“请输入带有符号的温度值”或者“C”

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

“请”是“请输入带有符号的温度值“的第0个字符

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

“‘Python

             语言”’            特别地   (“)‘或(’)”

(2)字符串的序号

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

(3)字符串的使用

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

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

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

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

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

字符串切片的高级用法

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

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

“0一二三四五六七八九十”[:3]结果是“0一二”

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

  “0一二三四五六七八九十”[1:8:2]结果是“一三五七”

  “0一二三四五六七八九十”[::-1]结果是“十九八七六五四三二一0”

(4)字符串的特殊字符

转义符\

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

eg:“这里有个双引号(\")"         这里有个双引号(“)

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

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

2.字符串操作符

       操作符及使用                                             描述

              x+y                                         连接两个字符串x和y

          n*x或x*n                                         复制n次字符串x

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

3.字符串处理函数

一些以函数形式提供的字符串处理功能

         函数及使用                                               描述

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

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

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

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

         hex(x)或0ct(x)                              整数x的十六进制或八进制小写形式

                                                              字符串hex(425)结果为“0x1a9"  oct(x)结果"0o651"

             chr(u)                                        u为Unicode编码,返回其对应字符

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

(7)Unicode编码

Python字符串的编码方式

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

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

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

eg:>>>"1+1=2"+chr(10004)

            '1+1=2  √'

>>>"这个字符♉︎的Unicode值是:“+strcord(“♉︎”))

      ’这个字符♉︎的Unicode值是:9801‘

对十二星座

>>>for i in range(12):

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

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

4.字符串处理方法

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

-“方法”特指.()风格中的函数()

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

-字符串及变量也是,存在一些方法

★一些以方法形式提供的字符串处理功能(8个)

       方法及使用                                                   描述

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中出现的次数

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

   str.replace(old,new)                      返回字符串str副本,所有old子串被替换为“Python”

                                                        replace("n","n123.io")结果为“Python123.io”

str.center(width[,fillchar])                 字符串str根据宽度width居中,fillchar可选"Python"

                                                        center(20,"=")结果为‘=======Python=======

                                                                                       (加粗部分一共20个字符)

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

                                                        “=Python”,strip("=pn")结果为“ytho”

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

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

5.字符串类型的格式化

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

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

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

槽      用大括号表示

format()方法的格式控制

{1}:计算机{0}的CPU占用率为{2}%.format("2018-10-10","C",10)

槽内部对格式化的配置方式(六个控制格式)

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

:引导符号

<填充>  用于填充的单个字符                      >>>"{0:=^20}".format("PYTHON")

<对齐> <左对齐  >右对齐  ^居中对齐          '=======PYTHON======='

<宽度>  槽设定的输出宽度                          >>>"{0:*>20}".format("BIT")

                                                                    '*****************BIT'

                                                                    >>>"{:10}".format("BIT")

                                                                    'BIT                        '(空格)


<   ,   >  数字的千位分隔符                        >>>"{0:,.2f}".format(12345.6789)

<精度> 浮点数小数精度或字符串最大       '12,345.68'

            输出长度                                        >>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)

<类型> 整数类型b,c,d,o,x,X                       '110101001,∑,425,651,1a9,1A9'

             浮点数类型e,E,f,%                        >>>"{0:e},{0:E},{0:f},{0:%}".format(3.14)

★(所有标点符号采用英文的半角形式)          '3.140000e+00,3.140000E+00,3.140000,314.000000%'

四.Time库的使用

1.time库基本介绍

Time库是Python中处理时间的标准库

-计算机时间的表达

-提供获取系统时间并格式化输出功能

-提供系统级精确计时功能,用于程序性能分析

import  time

time.()

time库包括三类函数

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

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

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

2.时间获取

               函数                                                          描述

              time()                     获取当前时间戳(很长的浮点数),即计算及内部时间值浮点数

                                            >>>time.time()

                                            1516939876.60122282

             ctime()                    获取当前时间并以易读方式表达,返回字符串

                                            >>>time.ctime()

                                            'Fri  Jan  26  12:11:16  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_isdat=0)

3.时间格式化

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

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

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

-strftime()方法

               函数                                                             描述

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

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

      strftime(tpl,ts)                     >>>t=time.gmtime()

                                                     >>>time.strftime("%Y-%m-%d %H:%M:%S",t)

                                                     '2018-01-26 12:55:20'

格式化字符串             日期/时间说明                        值范围和实力

%Y                                    年份                       0000~9999,例如:1900

%m                                   月份                             01~12,例如:10

%B                                月份名称                January~December,例如:April

%b                             月份名称缩写                      Jan~Dec,liru :Apr

%d                                    日期                               01~31,例如:25

%A                                   星期                 Monday~Sunday,例如:Wednesday

%a                                星期缩写                       Mon~Sun,例如:Wed

%H                            小时(24h制)                    00~23,例如:12

%I                              小时(12h制)                     01~12,例如:7

%p                                  上/下午                          AM,PM,例如:PM

%M                                   分钟                               00~59,例如:26

%S                                     秒                                 00~59,例如:26

                 函数                                                                描述

     strptime(str,tpl)                        str是字符串形式的时间值

                                                            tpl是格式化模板字符串,用定义输入效果

                                                            >>>timeStr='2018-01-26 12:55: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)

4.程序计时应用

程序计时应用广泛

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

-测量时间:perf_counter()

-产生时间:sleep()

                     函数                                                           描述

            perf_counter()                              返回一个CPU级别的精确时间计数值, 单位为秒

                                                                 由于这个计数值起点不确定,连续调用差值才有意义                                                                                          >>>start=time.perf_counter()

                                                                 318.66599499718114

                                                                 >>>end=time.perf_counter()

                                                                 341.3905185375658

                                                                 >>>end-start

                                                                 22.714523540384666

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

                                                                 >>>def wait():

                                                                            time.sleep(3.3)

                                                                >>>wait()             #程序将等待3.3秒后再退出

五.文本进度条

文本进度条

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

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

单行动态刷新

-刷新的本质是:用后打印的字符覆盖之前的字符

-不能换行:print()需要被控制

-要能回退:打印后光标退回到之前的位置\r(刷新的关键)

#TextProBarV1.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()

form 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,'-'))

计算问题扩展

-文本进度条程序使用了perf_counter()计时

-计时方法适合各类需要统计时间的计算问题

进度条扩展

-在任何运行时间需要较长的程序中增加进度条

-在任何希望提高用户体验的应用中增加进度条

-进度条是人机交互的纽带之一

你可能感兴趣的:(基本数据类型)