慕课《Python语言程序设计》笔记——第三章

基本数据类型

数字类型及操作:

-整数类型: 可正可负,没有取值范围限制: pow(x, y) x的y此方

                    十进制、二进制0b或0B开头,八进制0o或0O开头,十六进制,0x或0X开头

-浮点数:实数,范围-10^308~10^308,精度数量级10^-16

               存在不确定尾数,不是bug :round(x, d)对x四舍五入,d是位数

-复数:  

-数值运算操作符:+、-、*、/(结果浮点数)、//(结果整数)、%、**(幂)

                              x op= y

                             混合运算时,生成结果为“最宽”类型

                             整数 -> 浮点数 -> 复数  (逐渐“变宽”)  123 + 4.0 = 127.0

-数值运算函数:abs(x) 求x的绝对值

                          divmod(x, y),同时输出商和余数,以二元组返回

                          Pow(x, y, [, z]) 幂余: (x**y) % z, z可省略

                          round(x[, d]) 四舍五入,d是保留位数,默认为0

                          max(xa, x2, ...., xn) 返回最大值

                          min(xa, x2, ...., xn) 返回最小值

                          int(x) 将x变为整数

                          float(x) 变为浮点数,增加小数位

                          complex(x) 变为复数

 

天天向上的力量:

一年365天,每天进步1%,累计进步多少? 每天退步1%,累计剩下多少?

-第一问:千分之一的力量

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

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

                引入变量dayfactor,便于修改

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

-第三问:工作日的力量:

                周一到周五进步1%,周六周日退步1%

#DayDayUpQ3.py
dayup = 1.0
dayfactor = 0.01
for i in range(365):
	if i % 7 in [6, 0]:
		dayup *= 1 - dayfactor
	else:
		dayup *= 1 + dayfactor
print("工作日的力量:{:.2f}".format(dayup))

-第四问:工作日的努力:

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

                        for ...in... (计算思维) ->  def...while...(笨办法试错)

#DayDayUpQ4.py
#定义函数:
def dayUp(df):
	dayup = 1
	for i in range(365):
		if i % 7 in [6, 0]:
			dayup *= 1 - 0.01
		else:
			dayup *= 1 + df
	return dayup

dayfactor = 0.01
while dayUp(dayfactor) < 37.78:
	dayfactor += 0.001
print("工作日的努力参数量:{:.3f}".format(dayfactor))

df参数计算工作日力量函数,参数不同代码可共用,保留字def定义函数

保留字while判断条件是否成立,成立时执行循环

 

字符串类型及操作:

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

-字符串类型及操作:由一对单引号或双引号表示,仅表示单行字符串

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

                                          字符串序号;正向递增(0,1...)、反向递减(-1,-2...)

                                          索引/切片 Str[M:N:K]:M、N可省,K为步长,默认1

                                          逆序输出字符串:[::-1]

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

-字符串操作符:+:链接两个字符串

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

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

输出星期几:

#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])

-字符串处理函数:len(x) 长度,返回字符串x的长度

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

                                     hex(x)或oct(x)整数x的16进制或8进制小写形式字符串

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

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

                             

-字符串处理方法:“方法”在编程中是专有名词 <a>.<b>()  b为方法

                                      str.lower()或str.upper(),返回全部字符小写/大写

                                      str.split(sep=None) 返回一个列表,str根据sep被分隔

                                      str.count(sub) 返回子串sub在主串str中出现的次数

                                      str,replace(old, new)  str中所有old子串被替换为new

                                      str.center(width[,fillchar]) str根据width居中,fillchar填充

                                      str.strip(chars) 去掉str左右两侧出现的chars

                                      str.join(iter) 在iter中除最后元素外每个元素后面增加一个str :”,”.join(“12345”)->”1,2,3,4,5”(分隔)

-字符串类型格式化:格式化是对字符串进行格式表达的方式

                                         使用.format()方法,用法如下:

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

                                

                                                                                        不指定,参数顺序默认

 

                     

                                                                                          指定参数顺序

                            

                          

 

time库的使用:

-time库是Python中处理时间的标准库

-基本介绍:

                   计算时间表达、获取系统时间并格式化输出

                           import time

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

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

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

-时间获取:  

                  time() 获取当前时间戳,浮点数

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

                  gmtime() 获取当前时间,表示为计算机可处理的格式

-时间格式化:

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

                     strftime(tpl, ts)方法: tpl是格式化模板字符串,用来定义输出效果, ts是计算机内部时间类型变量

              

                     strptime(str, tpl):str是字符串形式的时间值,tpl是格式化模板字 符串,用来定义输入效果

            

-程序计时:

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

                          测量时间:perf_counter()

                         

                         sleep(s):让程序休眠s秒,可以是浮点数

文本进度条:  

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

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

                          采用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("------执行结束------")

-“文本进度条”单行动态刷新

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

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

                            要能回退:打印后光标退回到之前的位置 \r

#TextProBarV2.py
import time
for i in range(101):
	print("\r{:3}%".format(i),end="")
	time.sleep(0.1)

需在cmd环境下运行:

-实例完整效果:

#TextProBarV3.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, '-'))

-举一反三:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值