栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python语言程序设计第三章

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python语言程序设计第三章

第三章 基本数据类型
  • 3.1 数字类型及操作
    • 整数类型
    • 浮点数类型
    • 复数类型
    • 数值运算操作符
    • 数值运算函数
  • 3.2 实例3:天天向上的力量
  • 3.3 字符串类型及操作
    • 字符串类型的表示
    • 字符串操作符
    • 字符串处理函数
    • 字符串处理方法
    • 字符串类型的格式化
  • 3.4 模块2:time库的使用
    • time库基本介绍
    • 时间获取
    • 时间格式化
    • 程序计时应用
  • 3.5 实例4:文本进度条

方法论
  -Python语言数字及字符串类型
实践能力
  -初步学会编程进行字符类操作

3.1 数字类型及操作 整数类型

与数学中整数的概念一致
-可正可负,没有取值范围限制
-pow(x, y)函数:计算xy,想算多打算多大
如:pow(2, 100)
4种进制表示形式
-十进制:1010,99,-217
-二进制,以0b或0B开头:0b010,-0B101
-八进制,以0o或0O开头:0o123,-0O456
-十六进制:以0x或0X开头:0x9a,-0x89

浮点数类型

与数学中实数的概念一致
-带有小数点及小数的数字
-浮点数取值范围和小数精度都存在限制,但常规计算可忽略
-取值范围数量级约-10308至10308,精度数量级10-16
浮点数间运算存在不确定尾数,不是bug
0.1 + 0.2 0.3000000000000000004
二进制表示小数,可以无限接近,但不完全相同
0.1 + 0.2 == 0.3 False
round (0.1 + 0.2, 1) == 0.3 True
-round (x, d):对x四舍五入,d是小数截取位数
-浮点数间运算及比较用round()函数辅助
-不确定尾数一般发生在10-16左右,round()十分有效
浮点数可以采用科学计数法表示
-使用字母E或e作为幂的符号,以10为基数,格式如下:
< a>e< b> 表示a*10b
-例如:4.3e-3,9.6E5

复数类型

与数学中复数的概念一致
z = a + bj
-z.real 获得实部a
-z.imag 获得虚部b

数值运算操作符

操作符是完成运算的一种符号体系


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

类型间可进行混合运算,生成结果为“最宽”类型
-三种类型存在一种逐渐“扩展”或“变宽”的关系:
  整数 ->浮点数->复数
-例如:123 + 4.0 = 127.0 (整数+浮点数=浮点数)

数值运算函数

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


3.2 实例3:天天向上的力量

基本问题:持续的价值
-一年365天,每天进步1%,累计进步多少呢?1.01365
-一年365天,每天退步1%,累计剩下多少呢?0.99365
-如果是“三天打鱼两天晒网”呢?
-如果是“双休日又不退步”呢?

问题1:1‰的力量
-一年365天,每天进步1‰,累计进步多少呢?1.001365
-一年365天,每天退步1‰,累计剩下多少呢?0.999365

#DayDayUpQ1.py
dayup = pow (1.001, 365)
daydown = pow (0.999, 365)
print ("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))

问题2:5‰和1%的力量
-一年365天,每天进步5‰或1%,累计进步多少呢?1.005365,1.01365
-一年365天,每天退步5‰或1%,累计剩下多少呢?0.995365,0.99365

#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow (1 + dayfactor, 365)
daydown = pow (1 - dayfactor, 365)
print ("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))

使用变量的好处:一处修改即可

问题3:工作日的力量
-一年365天,一周5个工作日,每天进步1%?
-一年365天,一周2个休息日,每天退步1%?
-这种工作日的力量如何?

#DayDayUpQ3.py
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))        

采用循环模拟365天的过程:抽象+自动化

问题4:工作日的努力
-工作日模式要努力到什么水平,才能与每天努力1%一样?
-A君:一年365天,每天进步1%,不停歇
-B君:一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
def…while…("笨办法"试错)

#DayDayUpQ4.py
def dayUP(df):
    dayup = 1.0
    for i in range (365):
        if i % 7 in [6, 0]:
            dayup = dayup*(1-0.01)
        else:
            dayup = dayup*(1+df)
    return dayup   
dayfactor = 0.01  
while dayUP(dayfactor) < 37.38:
    dayfactor += 0.001
print ("工作日的努力参数是:{:.3f}".format(dayfactor))

根据df参数计算工作日力量的函数;参数不同,这段代码可共用
def保留字用于定义函数
while保留字判断条件是否成立
条件成立时循环执行
运行结果:工作日的努力参数是0.019
GRIT:perseverance and passion for long-term goals
-GRIT,坚毅,对长期目标的持续激情及持久耐力
-GRIT是获得成功最重要的因素之一,牢记天天向上的力量

3.3 字符串类型及操作 字符串类型的表示

由0个或多个字符组成的有序字符序列
-字符串由一对单引号或一对双引号表示
“请输入"或者’C’
-字符串是字符的有序序列,可以对其中的字符进行索引
“请"是"请输入"的第0个字符
字符串有3类共4种表示方法
-由一对单引号或双引号表示,仅表示单行字符串
“请输入"或者’C’
-由一对三单引号或三双引号表示,可表示多行字符串
‘’’ Python
语言’‘’
-如果希望在字符串中包含双引号或单引号
'这里有个双引号(”)‘或者"这里有个单引号(’)”
-如果希望在字符串中既包含双引号又包括单引号
‘’'这里既有双引号(”)又有单引号(‘)’‘’
字符串的序号

使用[ ]获取字符串中一个或多个字符
-索引:返回字符串中单个字符<字符串>[M]
-切片:返回字符串中一段字符子串<字符串>[M: N]
使用[M: N: K]根据步长对字符串切片
-<字符串>[M: N],M缺失表示至开头,N缺失表示至结尾
‘0123456789’[:3]结果是’012’
-<字符串>[M: N: K],根据步长K对字符串切片
‘0123456789’[1:8:2]结果是’1357’
‘0123456789’[::-1]结果是’987643210’(字符串逆序)
*转义符*
-转义符表达特定字符的本意
“这里有个双引号(”)" 结果为:这里有个双引号(")
-转义符形成一些组合,表达一些不可打印的含义
"b"回退 "n"换行(光标移动到下行首) "r"回车(光标移动到本行首)

字符串操作符


获取星期字符串
-输入:1-7的整数,表示星期几
-输出:输入整数对应的星期字符串

#WeekNamePrintV1.py
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input('请输入星期数字(1-7):'))
pos = (weekId - 1) * 3
print(weekStr[pos: pos+3])
#WeekNamePrintV2.py
weekStr = "一二三四五六日"
weekId = eval(input('请输入星期数字(1-7):'))
print("星期" + weekStr[weekId-1])
字符串处理函数

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


Unicode编码
Python字符串的编码方式
Unicode和字符是一一对应的
-统一字符编码,即覆盖几乎所有字符的编码方式
-从0到1114111(0×10FFFF)空间,每个编码对应一个字符
-Python字符串中每个字符都是Unicode编码字符

字符串处理方法

“方法”在编程中是一个专有名词
-“方法”特指< a>.< b>()风格中的函数< b>()
-方法本身也是函数,但与< a>有关,< a>.< b>()风格使用
-字符串及变量也是< a>,存在一些方法
一些以方法形式提供的字符串处理功能


字符串类型的格式化

格式化是对字符串进行格式表达的方式
-字符串格式化使用.format()方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
槽


槽内部对格式化的配置方式
{<参数序号> : <格式控制标记>}


3.4 模块2:time库的使用 time库基本介绍

time库是Python中处理时间的标准库
-计算机时间的表达
-提供获取系统时间并格式化输出功能
-提供系统级精确计时功能,用于程序性能分析
import time
time.< b>()
time库包括三类函数
-时间获取:time(), ctime(), gmtime()
-时间格式化:strftime(), strptime()
-程序计时:sleep(), perf_counter()

时间获取


时间格式化

将时间以合理的方式展示出来
-格式化:类似字符串格式化,需要有展示模板
-展示模板由特定的格式化控制符组成
-strftime()方法



程序计时应用

程序计时应用广泛
-程序计时指测量起止动作所经历时间的过程
-测量时间:perf_counter()
-产生时间:sleep()

3.5 实例4:文本进度条

-采用字符串方式打印可以动态变化的文本进度条
-进度条需要能在一行中逐渐变化
如何获得文本进度条的变化时间?
-采用sleep()模拟一个持续的进度

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

文本进度条单行动态刷新,关键是r
-刷新的本质是:用后打印的字符覆盖之前的字符
-不能换行:print()需要被控制
-要能回退:打印后光标退回到之前的位置r
print(, end = " ") print输出最后增加一个end中表示的信息,不想换行,就输入一个空字符串

#TextProBarV2.py
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, "-")

进度条扩展
-在任何运行时间需要较长的程序中增加进度条
-在任何希望提高用户体验的应用中增加进度条
-进度条是人机交互的纽带之一

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号