zoukankan      html  css  js  c++  java
  • 第三周 Python基本数据类型

    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字符串的特殊字符
    • 转义符

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

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

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

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

    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、实例:文本进度条

    方法论

    实践能力

  • 相关阅读:
    C语言中常用的库文件
    Typora 的日志路径
    常用的 C 语言库函数
    C语言中assert断言的用法
    C语言学习摘要
    Linux 下递归赋权
    Android提升进入界面的速度
    JMeter测试工具总结
    Selenium自动化测试总结
    Android 系统启动日志
  • 原文地址:https://www.cnblogs.com/2018-05-23/p/9178228.html
Copyright © 2011-2022 走看看