《Python语言程序设计基础》第三章笔记

3.1 数字类型及操作

3.1.1 整数类型

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

3.1.2浮点数类型

  • 浮点数间运算存在不确定尾数
 >>> 0.1 + 0.3
 0.4 
 >>> 0.1 + 0.2
 0.30000000000000004    ---不确定尾数
		
  • round(x, d):对x四舍五入,d是小数截取位数
    浮点数间运算及比较用round()函数辅助
 >>> 0.1 + 0.2 == 0.3 
 False	  
 >>>round(0.1 + 0.2) == 0.3
 True
       
  • 浮点数可以采用科学计数法表示
    使用字母e或E作为幂的符号,以10为基数,格式如下:
    < a >e< b > 表示 a*10^b

    例如:4.3e-3 值为0.0043
    9.6E5 值为960000.0

3.1.3 复数类型

  • a+bj 被称为复数,其中,a是实部,b是虚部
    z.real 获得实部
    z.imag 获得虚部

3.1.4 数值运算操作符

x + y加,x与y之和
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
+xx本身
-xx的负值
x % y余数,模运算 10%3结果是1
x** y幂运算,x的y次幂,x^y ,当y是小数时,开方运算 10**0.5结果是10
  • 二元操作符有对应的增强赋值操作符
    x op = y,即x = x op y,其中,op为二元操作符
    x += y
    x -= y
    x*= y 等

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

3.1.5 数值运算函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 实例3 天天向上的力量

  • 问题1: 1‰的力量
    代码如下:
>>>dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
  • 问题2: 5‰的力量
    代码如下:
>>>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%
    代码如下:
>>>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%,要多努力呢?
  • for…in… ——>def…while…
    代码如下:
>>>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))

3.3 字符串类型及操作

3.3.1 字符串类型的表示

  • 字符串由一对单引号或一对双引号表示
    "请输入带有符号的温度值: "或者 ‘C’

  • 字符串是字符的有序序列,可以对其中的字符进行索引
    “请” 是 "请输入带有符号的温度值: " 的第0个字符

  • 由一对单引号或双引号表示,仅表示单行字符串

  • 由一对三单引号或三双引号表示,可表示多行字符串

  • 若要在字符串中包含双引号或单引号
    ‘这里有个双引号(")’ 或者 “这里有个单引号(’)”

  • 如果希望在字符串中既包括单引号又包括双引号呢?
    ‘’’ 这里既有单引号(’)又有双引号 (") ‘’’

3.3.2 字符串的使用

  • 索引:返回字符串中单个字符 <字符串>[M]
    "请输入带有符号的温度值: "[0] 或者 TempStr[-1]
  • 切片:返回字符串中一段字符子串 <字符串>[M: N]
    "请输入带有符号的温度值: "[1:3] 或者 TempStr[0:-1]

字符串切片高级用法 ——— 使用[M: N: K]根据步长对字符串切片

  • <字符串>[M: N],M缺失表示至开头,N缺失表示至结尾
    “〇一二三四五六七八九十”[:3] 结果是 “〇一二”
  • <字符串>[M: N: K],根据步长K对字符串切片
    “〇一二三四五六七八九十”[1:8:2] 结果是"一三五七"
    “〇一二三四五六七八九十”[::-1] 结果是 “十九八七六五四三二一〇”

3.3.3 字符串操作符

  • x + y 连接两个字符串x和y
  • n * x 或 x * n 复制n次字符串x
  • x in s 如果x是s的子串,返回True,否则返回False

3.3.4 字符串处理函数

  • len(x) 长度,返回字符串x的长度
    len(“一二三456”) 结果为 6
  • str(x) 任意类型x所对应的字符串形式
    str(1.23)结果为"1.23" str([1,2])结果为"[1,2]"

3.3.5 字符串处理方法

方法及使用描述
str.lower() 或 str.upper()返回字符串的副本,全部字符小写/大写   “AbCdEfGh”.lower() 结果为 “abcdefgh”
str.capitalize()将首字母变大写 ,其余的变成小写   s = “hello, I’m Zxf” print(s.capitalize()) –> Hello i’m zxf
str.title()将字符串 中的每个单词的首字母变成大写,其余变小写   s = “zXf lMl” print(s.title()) –> Zxf Lml
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
str.replace(old, new)返回字符串str副本,所有old子串被替换为new “python”.replace(“n”,“n123.io”) 结果为 “python123.io
str.center(width[,fillchar])字符串str根据宽度width居中,fillchar可选  “python”.center(20,"=") 结果为 ‘======= pythgon =======’
str.strip(chars)从str中去掉在其左侧和右侧chars中列出的字符   “= python= “.strip(” =np”) 结果为 “ytho”
str.join(iter)在iter变量除最后元素外每个元素后增加一个str   “,”.join(“12345”) 结果为 “1,2,3,4,5” #主要用于字符串分隔等

3.3.6 字符串类型的格式化

  • 字符串格式化使用.format()方法,用法如下:
    <模板字符串>.format(<逗号分隔的参数>)
    在这里插入图片描述
format()方法的格式控制
引导符号
<填充>用于填充的单个字符
<对齐>‘<’ 左对齐  ‘>’ 右对齐  ‘^’ 居中对齐
<宽度>槽设定的输出宽度
<,>数字的千位分隔符
<.精度>浮点数小数精度或字符串最大输出长度
<类型>整数类型 b, c, d, o, x, X 浮点数类型 e, E, f, %

例:

<对齐>
>>>"{0:=^20}".format("PYTHON")
'=======PYTHON======='
>>>"{0:*>20}".format("BIT")
'*****************BIT'

<宽度>
>>>"{:10}".format("BIT")
'BIT       '

<,>
>>>"{0:,.2f}".format(12345.6789)
'12,345.68'

<类型>
>>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'
>>>"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'

3.4 time库基本介绍

3.4.1 time库概述

time库包括三类函数

  • 时间获取:time() ctime() gmtime()
  • 时间格式化:strftime() strptime()
  • 程序计时:sleep(), perf_counter()

3.4.2 时间获取

函数描述
time()获取当前时间戳,即计算机内部时间值,浮点数 例:>>>time.time() 1516939876.6022282
ctime()获取当前时间并以易读方式表示,返回字符串 例: >>>time.ctime() ‘Fri Jan 26 12:11:16 2018’
gmtime()获取当前时间,表示为计算机可处理的时间格式

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

>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)

'2019-03-18 08:45:04'

在这里插入图片描述
在这里插入图片描述

>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2019-03-18 08:45:04'
>>>t = time.gmtime()
>>>timeStr = '2018-01-26 12:55:20' 		
>>> time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=18, tm_hour=16, tm_min=55, tm_sec=20, tm_wday=0, tm_yday=77, tm_isdst=-1)

3.4.4 程序计时

  • perf_counter()
    返回一个CPU级别的精确时间计数值,单位为秒 由于这个计数值起点不确定,连续调用差值才有意义
		>>>start = time.perf_counter() 318.66599499718114 
		>>>end = time.perf_counter() 341.3905185375658 
		>>>end - start 22.724523540384666
  • sleep(s)

s拟休眠的时间,单位是秒,可以是浮点数

		>>>def wait():
		  			 time.sleep(3.3)
	>>>wait() #程序将等待3.3秒后再退出
		————本文整理自《Python语言程序设计》
				嵩天
				北京理工大学
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值