Python语言程序设计#MOOC笔记第三周

Python语言程序设计(北理工)

三、基本数据类型

3.1 数字类型及操作

整数类型

  • 可正可负,没有取值范围限制,4种进制表示形式:十进制:1010,99,-21;二进制:以0b或0B开头,0b010,-0B101;八进制:以0o或0O开头,0o123,-0O234;十六进制:以0x或0X开头,0x9a,-0X23
  • 最常用pow(x,y)函数:计算x^y

浮点类型

  • 与数学中实数的概念一致,带有小数点及小数的数字,浮点数取值范围和小数精度都存在限制,但常规计算可忽略,取值范围数量级约-10(308)至10(308),精度数量级10^(-16)
  • 浮点数间运算存在不确定尾数,不是bug
  • 可以用round(x,d):对x四舍五入,d是小数截取位数,来避免不确定尾数对计算和判断的影响。
  • 科学计数法:e,表示 a*10^b

复数类型

  • 与数学中复数的概念一致,a+b*j,平常用的很少,但是在空间转换和复变函数中有用。

数值运算操作符

  • 在这里插入图片描述在这里插入图片描述
  • 二元操作符有对应的增强赋值操作符:在这里插入图片描述

数字类型的关系

  • 类型之间可进行混合运算,生成结果为“最宽”类型,三种类型存在一种组件“扩展”或“变宽”的关系:整数 < 浮点数 < 复数,例如:整数+浮点数=浮点数

数值运算函数

在这里插入图片描述
pow(3,pow(3,99),10000)即为取3(3(99))的结果后四位【幂余】
在这里插入图片描述
在这里插入图片描述

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

1%o的力量

  • 问题1:一年365天,每天进步1%o,累计进步多少呢?
  • 问题2:一年365天,每天退步1%o,累计退步多少呢?

编写程序

#DayDayUpQ1.py
dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#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))
#问题描述:
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
dayfactor = 0.01
while dayUp(dayfactor) < 37.78:
    dayfactor += 0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))  

GRIT: Preseverance and passion for long-term goals.

举一反三

问题的变化和扩展:

  • 三天打鱼两天晒网

3.3 字符串类型及操作

字符串类的表示

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

  • 字符串有2类共4种表示方法:有一对单引号或双引号表示,仅表示单行字符串;有一对三单引号或三双引号表示,可表示多行字符串

  • 如果希望在字符串中包含双引号或单引号,‘这里有个双引号(“)‘或“这里有个单引号(’)”;如果希望在字符串中既包括单引号又包括双引号,‘’‘这里既有单引号(’)又有双引号(“)‘’‘

  • 字符串的序号:

  • 索引和切片:使用[]获取字符串中一个或多个字符,索引:返货字符串中的单个字符 <字符串>[M];切片:返回字符串中一段字符字串 <字符串>[M:N]

  • 使用[M:N:K]根据步长对字符串切片:<字符串>[M:N],M缺失时表示至开头,N缺失时表示至结尾;<字符串>[M:N:K],根据步长K对字符串切片;<字符串>[::-1],可用来进行字符串的逆序

  • 转义符 \ ,转义符表达特定字符的本意;“这里有个双引号(”)";转义符形成一些组合,表达一些不可打印的含义,"\b"回退;"\n"换行(光标移动到下行首);"\r"回车(光标移动到本行首)

字符串操作符

  • 获取星期字符串

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

字符串处理函数

  • 在这里插入图片描述

  • Unicode编码:Python字符串的编码形式,统一字符编码,即覆盖几乎所有字符的编码方式;从0到1114111空间,每个编码对应一个字符;Python字符串中的每个字符都是Unicode编码字符
    在这里插入图片描述

  • “1 + 1 = 2” + chr(10004)

    ‘1 + 1 = 2 √’

    for i in range(12):
     print(chr(9800 + i),end="")
    #♈♉♊♋♌♍♎♏♐♑♒♓
    

字符串处理方法

  • “方法”在编程中是一个专有名词,特指.()风格中的函数(),方法本身也是函数,但与有关,字符串及变量也是,存在一些方法,方法必须要用**.**的形式来执行

  • 8个字符串处理方法:

    在这里插入图片描述

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

  • 槽{}:"{}:计算机{}的CPU占用率为{}%".format(“2018-10-10”,“C”,10)

    ​ “{1}:计算机{0}的CPU占用率为{2}%”.format(“2018-10-10”,“C”,10) #槽中的数字表示所填入的format后面参数对应的位置

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

3.4 time库的使用

time库的使用

  • time库是Python中处理时间的标准库,主要用于计算机时间的表达,提供获取系统时间并格式化输出功能,提供系统级精确计时功能,用于程序性能分析
  • time库包括三类函数:时间获取;时间格式化;程序计时

时间获取函数

时间格式化

  • 将时间以合理的方式展示出来

  • strftime(tpl,ts)

  • strptime(str,tpl)

程序计时

  • 程序计时应用广泛

3.4 实例4:文本进度条

简单的开始

  • #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

  • #TextProBarV2.py
    import time
    for i in range(101):
    	print("\r{:3}%",format(i),end="")
    	time.sleep(0.1)
    
  • #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(s具有覅那三ale//2,'-'))
    

举一反三

  • 计算问题扩展,perf_counter计时

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

  • 文本进度条的不同设计函数:

  • 先慢后快更符合人类心理需求

3.5 作业

平方根格式化

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

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

‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬如果结果超过30个字符,则以结果宽度为准。

#Sqrt.py
a = int(input())
print("{0:+>30.3f}".format(pow(a,0.5)))

字符串分段组合

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

#split.py
s = input().split('-')
result = [s[0], '+', s[-1]]
print(''.join(result))
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼也爱学习

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值