python 学习第三天

数字类型及其操作

  -整数类型

  -浮点数类型 

  -复数类型

  -数值运算操作

  -数值运算函数

1.整数类型:可正可负,没有取值范围限制

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

  1.1进制表示

    十进制

    二进制  :0b或者0B开头

    八进制  :0o或者0O开头

    十六进制  :0x或者0X开头

 

2.浮点数类型:与数学中实数的概念一致,是带有小数点及小数的数字,取值范围-10^308~10^308,精度范围10^-16

  2.1浮点数间运算存在不确定尾数,不是bug,因为计算机表示小数的时候保存的是一个近似值。

    0.1+0.2==0.3    #False,因为精度问题

  解决方法  round(x,d)函数  :对x四舍五入,d是小数的截取位数

    round(0.1+0.2,1)==0.3  #True

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

    xey    表示x*10^y

3.复数类型:与数学复数概念一致

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

  实部:z.real

  虚部:z.imag

4.数值运算操作符

  4.1  +、-、*、/

    不同于其他语言,python的除法得到的商是浮点类型,与数学中的除法一致

  4.2  //  #整数除

    10//3==3    #True

  4.3  

    +x  :x本身

    -y  :y的负值

    x%y  :取余

    x**y  :x^y    #与pow函数效果相同,当y是小数时,是开方运算

  4.4增强操作符

    x+=y

    x-=y

    x*=y

    x/=y

    x//=y

    x%=y

    x**=y

5.数字类型间混合运算时,结果为“最宽”的类型

  宽度  :整数<浮点数<复数

      例:123+4.0=127.0

6.数值运算函数

  abs(x)  :取绝对值

  divmod(x,y)  :同时输出商和余数

    例:divmod(10,3),结果为(3,1)

  pow(x,y)  :幂运算

  pow(x,y[,z])  :x,y幂运算后对z取余    #方括号内的东西表示可省略,省略后就是幂运算

    例:想计算3的3的99次方的后四位

       pow(3,pow(3,99),10000)

  round(x[,d])  :四舍五入,省略d就是四舍五入成整数

  max(x1,x2...xn)  :取最大值

  min(x1,x2...xn)  :取最小值

  int(x)    :取整运算,直接舍弃小数部分  #x可以为float类型,也可以为字符串

  float(x)   :变成浮点数  #x可以是整数和字符串

  complex(x)  :变成复数  

 

 

问题:天天向上的力量

  1.一年365天,每天进步千分之一,累计进步多少呢?

   一年365天,每天退步千分之一,累计退步多少呢

    pow(1.001,365)  #1.44

    pow(0.999,365)  #0.69

  2.一年365天,每天进步千分之5或者百分之1,累计进步多少呢?

   一年365天,每天退步千分之5或者百分之1,累计退步多少呢?

    dayfactor=0.005或者0.01  #用变量的好处

    pow(1+dayfactor,365)

    pow(1-dayfactor,365)

  3.工作日进步

    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%相同的效果

  笨办法试错

    def dayUP(dayfactor):    #定义一个函数 

      dayup=1

      for i in range(365):

        if i%7 in [6,0]:

          dayup=dayup*(1-dayfactor)

        else

          dayup=dayup*(1+dayfactor)

      return dayup

    df=0.01

    while dayUP(df)<37.78:  #while循环

      df+=0.001

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

 字符串类型及其操作

  -字符串类型的表示

  -字符串切片的高级用法

  -字符串操作符

  -字符串处理函数

  -字符串处理方法

  -字符串类型的格式化

1.字符串类型的表示

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

  三对单引号或者三对双引号可以表示多行字符串

  \ 是转义符,转义符后的字符表示特定字符的本意,如\“表示”本身

  \b 回退

  \n 换行

  \r 回车(光标移动到当前行的行首)

  注意:python 并没有提供真正的多行注释方法,三对单引号或者三对双引号可以用于注释是因为它本身是个字符串,但是我们并没有给这个字符串赋值或进行任何操作,其作用相当于注释。 

     若字符串中想要单引号或者双引号作为字符,则字符串相应的应该由双引号或者单引号表示

     若字符串中既希望出现单引号字符有希望出现双引号字符,则字符串由三对单或双引号表示

 

2.字符串切片的高级用法

  可以使用[M:N:K]根据步长K切片

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

  <字符串>[::-1],这里M,N缺失,K为-1,表示逆向的字符串 

3.字符串操作符

  x+y  : 连接x、y

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

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

4.字符串处理函数

  len(x)  :返回字符串长度

  str(x)   :将任何类型变换成字符串类型  #与eval作用相反

  hex(x)和oct(x)  :返回x的十六进制或者八进制小写形式的字符串

    例:hex(425)   #0x1a9

      oct(425)    #0o651

  chr(u)  :u为Unicode编码,返回其对应的字符  #9800~9812代表十二星座的字符表示

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

  注意:python中使用的是Unicode编码,因此python支持各种语言

5.字符串处理方法    #注意方法和函数的区别,方法是某个对象提供的功能,必须以a.b的形式使用

  .lower()/.upper  :将整个字符串变成小写/大写

  .split(sep)    :用sep来分隔字符串,并返回一个列表类型

      例如  "A,B,C".split(",")     #['A','B','C']

  .count(sub)    :返回字串sub在字符串中出现的次数

  .replace(old,new)  :将所有old子串变成new子串

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

      例如  "python".center(20,"=")    #'=======python======='

  .strip(chars)    :去掉字符串两侧的所有chars字符

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

  .join(iter)    :在iter遍历除最后元素外每个元素后都增加一个str

      例如  ",".join("12345")    #"1,2,3,4,5"

6.字符串类型的格式化

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

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

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

  槽:占位信息符,只在字符串中有用,用{}表示,字符串中的槽的默认顺序从0开始,每一个槽中添加的内容与.format中对应的参数是一致的,槽中也可以写数字,这个数字表面对应format中的第几个参数。

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

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

  python提供了6种格式控制标记,分为2组

     <填充><对齐><宽度>

    例如:"{0:=^20}".format("PYTHON")    #0表示format中第0个参数,=表示填充字符

                        # ^ 表示居中对齐,20表示宽度

                        #  '=======PYTHON======='

    其中 > 表示右对齐, 不写默认左对齐


    <,><.精度><类型>  

    <,>   数字的千位分隔符

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

    <类型>

    整数类型 :b,c,d,o,x,X

      -b:二进制

      -c: unicode对应的字符

      -d: 十进制

      -o: 八进制

      -x: 十六进制

      -X: 大写的十六进制

    浮点数类型: e,E,f,%

      -e:  e形式科学计数法

      -E:  E形式科学计数法

      -f:   通常的形式表示浮点数

      -%: 以百分号表示浮点数

      例:"{0:,.2f}".format(12345.6789)    # '12,345.68'

    

time库的使用

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

2.time库中的函数 

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

    time()  :获取当前时间戳,时间戳就是指当前系统中表示时间的一个浮点数,是从1970年1月1日00:00开始到当前为止的一个以秒为单位数字

    ctime()  :返回容易被人类读取的时间字符串

    gmtime()  :返回一个计算机程序可以处理的struct_time时间格式

        time.struct_time(

                tm_year=2020,

                tm_mon=1,

                tm_mday=26,

                tm_hour=13,

                tm_min=32,

                tm_sec=16,

                tm_wday=4,

                tm_yday=26,

                tm_isdst=0

                )

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

    strftime(tpl,ts)  :将时间变成 一段字符串      #  str-format-time

       tpl:格式化的模板字符串参数,用来定义输出效果

       ts:计算机内部的时间类型的变量(struct_time)

       例:t=time.gmtime()

            time.strftime("%Y-%m-%d %H:%M:%S",t)  #  '2018-01-26 12:55:20'

          

 

           

 

    strptime(str,tpl)  :将字符串变成可供计算机内部操纵的struct_time类型时间    #  str-parse-time

       str:字符串格式的时间值

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

        例如:timeStr="2018-01-26 12:55:20"

           time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")

           得到的time_struct

(

                tm_year=2018,

                tm_mon=1,

                tm_mday=26,

                tm_hour=12,

                tm_min=55,

                tm_sec=20,

                tm_wday=4,

                tm_yday=26,

                tm_isdst=0

                )

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

    sleep(s)  让程序休眠s秒时间,s单位是秒,可以是浮点数

    perf_counter()  返回一个CPU级别的精确时间计数值(float),单位为秒,这个计数值的起点不确定(不一定从0开始),因此经常调用这个函数两次取其差值

 

模拟文本进度条

  代码如下:

      #TextProBarV1

      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,"-"))

  文件进度条的不同设计函数

 

 

  

posted @ 2020-05-24 19:55  9761滴  阅读(347)  评论(0编辑  收藏  举报