• [MoocPython课程]基本数据类型


    基本数据类型

    1.数值型数据:

    实例之天天向上1.0:

    每天进步的力量:

    每天进步1%o,一年下来进步多少呢

    每天退步1%o,一年下来退步多少呢

    给出代码:

    dayfactor = 0.001
    up = pow(1+dayfactor,356)
    down = pow(1-dayfactor,365)
    print('天天向上最终成为原来的{:.2f}倍,天天向下最终成为原来的{:.2f}倍'.format(up,down))

    结果:天天向上最终成为原来的1.43倍,天天向下最终成为原来的0.69倍

    这样我们可以通过修改dayfactor而轻松计算不同进步幅度的最终进步/退步结果

    例如0.1倍时

    天天向上最终成为原来的34.55倍,天天向下最终成为原来的0.03倍

    实例之天天向上2.0:

    工作日的力量:

    入过我们加入一个新的条件,即,只有工作日时进步,周六日会退步

    dayup = 1.0
    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.63倍

    实例之天天向上3.0:

    如果我们采取工作日向上的进步方式,且周末退步1%,那么我们工作日要进步多少才能和天天向上进步1%相当呢?

    代码实现:

    def dayUp(dayfactor):
        dayup = 1.0
        for i in range(365):
            if i%7 in [6,0]:
                dayup = dayup*(1-0.01)
            else:
                dayup = dayup * (1 + dayfactor)
        return dayup
    
    dayfactor = 0.01
    while dayUp(dayfactor) < 37.38:
        dayfactor += 0.01
    print('每天进步{},工作日进步力量才能追上天天向上进步0.01力量'.format(dayfactor))

    代码解析:

    我们首先应该将2.0中的工作日进步力量封装成一个函数,以工作日进步的幅度为参数,这样时为了方便这段代码,对于不同进步幅度的复用。封装完成后,我们可以用最传统的蛮力法对不同的进步幅度进行试错,每次进步幅度上涨0.01,这样蛮力计算,直到追赶上天天向上进步0.1的结果。

    2.字符串型数据:

    字符串的4种表示方法:

    ‘’,"",’’’’’’,

    字符串的8个处理方法:

    # 1.字符全部大/小写
    print('ABCDEFG'.lower())
    print('abcdefG'.upper())
    # 2.字符串根据参数分割
    print('a,b,c,d,e,f,g'.split(','))
    # 3.字符串根据参数计数
    print('an apple a day'.count('a'))
    # 4.字符替换内容
    print('python'.replace('n','123.io'))
    # 5.字符串根据width居中,fillchar可选,str.center(width,[fillchar])
    print('python'.center(20,'$'))
    # 6.去掉字符串中的某些字符 str.strip('chars')
    print('= python='.strip('= pn'))
    # 7.为字符串添加分隔符, 'tip'.jion(str)
    print('^'.join('123456'))
    # 8.字符串格式化.format()
    print('{}:计算机{}的CPU占用率为:{}%'.format('2020-2-13','C',45))

    {:10} 表示默认宽度为10,默认情况左对齐

    {:=^20} 表示宽度20,居中对齐,其余用=填充

    {:*>20} 表示宽度20,右对齐,其余用*填充

    {:<20} 表示宽度20,左对齐

    转义符

    作用方便’字符的输出

    字符串操作符

    +代表拼接

    *代表重复输出

    eval() 字符串转化成数值

    str = '一二三四五六日'
    num = eval(input())
    print("星期"+weekstr[num-1])

    字符串的切片:

    python采用9801编码

    我们若想得到某个特殊字符的编码,可以用ord(‘♉’)函数

    例如我们想知道 金牛座符号的 9801 编码

    print(ord('♉'))

    得到输出:9801

    例如我们想得到12星座的字符

    for i in range(12):
        print(chr(9801+i),end=' ')

    得到输出:♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ♔

    3.Time库的使用

    # Time库的使用
    import time
    # 1.获取计算机内部的时间值,一个浮点数(1970-1-1 00:00 到现在的时间)
    print(time.time())
    # 2.返回当前时间,以易读方式表示
    print(time.ctime())
    # 3.返回一个time结构体,方便提取年/月/日/时间
    print(time.gmtime())
    # 4.让time结构体,按指定格式生成字符串
    t = time.gmtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S',t))
    # 6.计时器perfcounter()和休眠函数sleep()
    start = time.perf_counter()
    time.sleep(3)
    end = time.perf_counter()
    print('开始时间:',start)
    print('结束时间:',end)
    print(end-start)

    实例:模拟输出一个进度条1.0

    ------执行开始------
     0 %[->         ]%
    10 %[*->        ]%
    20 %[**->       ]%
    30 %[***->      ]%
    40 %[****->     ]%
    50 %[*****->    ]%
    60 %[******->   ]%
    70 %[*******->  ]%
    80 %[********-> ]%
    90 %[*********->]%
    100%[**********->]%
    ------执行结束------
    

    代码实现:

    import time
    scale = 10
    print('------执行开始------')
    for i in range(scale+1):
        a = '*'*i
        b = ' '*(scale-i-1)
        print('{:^3.0f}%[{}->{}]%'.format(10*i,a,b))
    print('------执行结束------')

    实例:模拟输出一个进度条2.0

    效果:(单行动态刷新)

    100%[**********->]%
    

    代码实现

    import time
    scale = 10
    for i in range(scale+1):
        a = '*'*i
        b = ' '*(scale-i)
        print('
    {:^3.0f}%[{}->{}]%'.format(10*i,a,b),end='')
        time.sleep(0.5)

    区别:在输出的字符串中包含的’ ’ 的含义为,每次将光标移动至行首,配合end=’'不换行,达到刷新单行的效果

    实例:模拟输出一个进度条3.0

    改进:加上一个时间

     -----------------------执行开始-----------------------
    100%[**************************************************->]5.03S
     -----------------------执行结束-----------------------
    
    
    import time
    scale = 50
    start = time.perf_counter()
    print('
    ','执行开始'.center(scale,'-'))
    for i in range(scale+1):
        a = '*'*i
        b = ' '*(scale-i)
        c = (i/scale)*100
        per = time.perf_counter() - start
        print('
    {:^3.0f}%[{}->{}]{:.2f}S'.format(c,a,b,per),end='')
        time.sleep(0.1)
    print('
    ','执行结束'.center(scale,'-'))

    4.测试实例

    1.平方根格式化

    描述

    获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

    如果结果超过30个字符,则以结果宽度为准。

    输入 输出
    示例 1 10 +++++++++++++++++++++++++3.162

    代码:

    x = eval(input())
    sqrt = pow(x,1/2)
    print('{:+>30.3f}'.format(sqrt))

    代码解析:首先要注意到input函数接收的输入,是字符串型的,我们使用eval函数将输入转化为数值型数据,然后用pow函数计算其平方根,最后在输出中用.format函数进行字符串的格式化。

    2.字符串分段组合

    描述

    获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。

    输入 输出
    示例 1 Alice-Bob-Charis-David-Eric-Flurry Alice+Flurry

    代码:

    x = input()
    list = x.split('-')
    print('{}+{}'.format(list[0],list[-1]))

    代码解析:首先用input函数接收输入:然后用split函数进行分割,得到分割好的字符串列表,只需要将第一个元素和最后一个元素使用.format函数按照规定格式进行输出就可以了。

  • 相关阅读:
    Solaris+Oracle安装(详细图解)
    linux卸载和安装jdk
    UTF8, Unicode, GB2312格式串转换之C语言版
    linux安装ant
    在 Linux 平台下使用 JNI
    华为C/C++笔试题(1)
    c面试
    mongodb数据库
    YARN
    NPM(包管理器)
  • 原文地址:https://www.cnblogs.com/hzshisan/p/12571085.html
Copyright © 2020-2023  润新知