Python基础(二)


数字类型及操作

整数类型

四种进制表示形式:

  • 十进制:1010,99,-217

  • 二进制,以0b或0B开头:0b010,-0B010

  • 八进制,以0o或0O开头:0o123,-0O456

  • 十六进制,以0x或0X开头:0x9a,-0X89

浮点数类型

  • 浮点数之间的运算存在不确定位数,但是这不是bug,是二进制和十进制的转换导致。

  • round(x,d):对x四舍五入,d是小数截取位数

  • 浮点数间运算与比较用round()函数辅助

  • 不确定位数一般发生在10-16,因此round()十分有效

  • 使用字母e或E来表示科学计数法:4.3e-3 —> 0.0043

复数类型

  • z=1.23e-4+5.6e+89j

    实部:1.23e-4 可以用z.real获得实部

    虚部:5.6e+89j 可以用z.imag获得虚部

数值运算操作符

  • ‘/‘表示除法 ‘//‘表示整除
  • ‘**’表示幂运算

数值运算函数

函数 描述
abs(x) 取绝对值
divmod(x,y) 同时输出商和余数
pow(x,y[,z]) 等价于(x**y)%z,参数z可以省略
round(x[,d]) 四舍五入,d是保留小数的位数
max(x1,x2,x3……xn) 返回最大值,n不限
min(x1,x2,x3……xn) 返回最小值,n不限
int(x) 将x变成整数,舍弃小数部分
float(x) 将x变成浮点数,增加小数部分
complex(x) 将x变成复数,增加虚数部分

实例:天天向上的力量

题目描述

工作日模式要努力到什么水平,才能与每天努力1%一样?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

-A君: 一年365天,每天进步1%,不停歇 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

每周工作5天休息2天,计算工作日的努力参数是多少才能与每天努力1%一样。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮

要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(1) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬一年365天,以第0天的能力值为基数,记为1.0;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(2) ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;

输出

输出结果格式如下:(其中结果保留小数点后三位,冒号后有一个空格)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

工作日的努力参数是: 0.019

参考代码

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))
  • 工作日模式,每天要努力到1.9%,相当于365模式每天1%

  • 采用{:.3f}将输出数字变成三位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出。

字符串类型及操作

字符串类型的表示

  • 表示方法:2类4种:一对单引号、一对双引号、一对三单引号、一对三双引号

  • 字符串的序号:正向递增序号(从0开始)、反向递减序号(从-1开始)

  • 索引:s[n]

  • 切片:s[m:n] (m和n可以缺失,m缺失表示至开头,n缺失表示至结尾)

    ​ s[m:n:k] (根据步长k对字符串切片)

    ​ “123456789”[::-1]结果是:”987654321”

字符串操作符

描述 操作符及使用
x+y 连接两个字符串x和y
n x 或 x n 复制n次字符串x
x in s 如果x是s的字串,返回True,否则返回False

字符串处理函数

函数及使用 描述
len(x) 长度,返回字符串x的长度
len(“一二三456”)结果为6
str(x) 任意类型x所对应的字符串形式
str(1.23)结果为”1.23”、str([1,2])结果为”[1,2]”
hex(x) 或 oct(x) 整数x的十六进制或八进制小写形式的字符串
hex(425)结果为”0x1a9”、oct(425)结果为”0o651”
chr(u) x为Unicode编码,返回其对应的字符
ord(x) x为字符,返回其对应的Unicode编码

字符串处理方法

方法及使用 描述
str.lower() 或 str.upper() 返回字符串的副本,全部字符小写大写
str.split(sep=None) 返回一个列表,由str根据sep被分割的部分组成
“A,B,C”.split(“,”)结果为[‘A’,’B’,’C’]
str.count(sub) 返回字串sub在str中出现的次数
str.replace(old,new) 返回字符串str副本,所有old字串被替换为new
str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选
str.strip(chars) 从str中去掉在其左侧和右侧chars中列出的字符
“= python= “.strip(“ =np”)结果为”ytho”
str.join(iter) 在iter变量除最后元素外每个元素后增加一个str
“,”.join(“12345”)结果为”1,2,3,4,5”、主要用于字符串的分隔

字符串类型的格式化

字符串格式化使用.format()方法,用法如下:

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

.png)

.png)

.png)

.png)

.png)

参考资料

https://www.icourse163.org/learn/BIT-268001?tid=1207014257#/learn/content?type=detail&id=1212094131&cid=1215248182

https://www.icourse163.org/learn/BIT-268001?tid=1207014257#/learn/content?type=detail&id=1212094131&cid=1215248183

https://www.icourse163.org/learn/BIT-268001?tid=1207014257#/learn/content?type=detail&id=1212094131&cid=1215248184


文章作者: Amonologue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Amonologue !
  目录