基本数据类型:
整数类型:与数学中的整数概念一致
可正可负,没有取值范围限制
pow(x,y)函数:计算X^Y想算多大算多大
答案太长就不截全图片了
整数类型的四种进制表示形式
十进制:1010,99,-217
二进制以0b或0B开头:0b010,-0B101
八进制以0o或0O开头:0o123,-0O456
十六进制以0x或0X开头:0x9a,-0X89
以上就是关于python整数,你所需要知晓的全部内容:整数无限制、四种进制表示形式
浮点数类型
与数学中的实数概念一致
带有小数点以及小数的数字
浮点数的取值范围和小数精度都存在限制,但常规计算可以忽略
取值范围数量级约-10^308至10^308,精度数量级为10^-16
浮点数类型运算存在不确定尾数,不是bug,这个现象涉及到计算机组成原理里面的内容了,不详细展述
显示如下图所示:
出现这种情况的原因可以用一句话概述:
二进制表示小数,可以无限接近,但不完全相同
emm,那咋办,有时候需要精确的结果啊????
大多数时候用round方法可以解决
round(x,d)对x四舍五入,d是小数截取位数
浮点数间运算及比较用round()函数辅助
不确定尾数一般发生在10^(-16)左右,所以round十分有效
使用字母e或E作为幂的符号,以10为基数,格式如下:
<a>e<b> 表示a*10^b
关于python浮点数,需要知道的多一点,总结一下以上的大纲
1、取值范围和精度基本无限制
2、运算存在不确定尾数,round()
3、科学计数法表示
复数类型:与数学中的复数概念一致
x^2=-1,那么j=√-1
实部z.real获得实部
虚部z.imag获得虚部
数值运算操作符:是完成运算的一种符号体系。
操作符及使用 | 描述 |
x+y | 加 |
x-y | 减 |
x*y | 乘 |
x/y | 除 |
x//y | 整除 |
操作符及使用 | 描述 |
+x | x本身 |
-y | y的负值 |
x%y | 模运算求余数 |
x**y | x的y次幂 |
二元操作符有对应的增强赋值操作符
x op =y,即 x=x op y,其中,op为二元操作符
X **=3与X=X**3等价
数字间的类型关系:
不同的类型间可以进行混合运算,生成结果为最宽类型:
三种类型存在一种逐渐“扩展”或“变宽”的关系:
整数-》浮点数-》复数
例如:123+4.0=127.0(整数+浮点数=浮点数)
数值运算函数:
一些以函数形式提供的数值运算功能
1 abs(x) #结果为x的绝对值 2 divmod(x,y) #结果为(x//y,x%y) 3 pow(x,y[,z]) #(x**y)%z
round(x[,d]) 四舍五入,d是小数位数默认值是0
round(-10.123,2)结果为-10.12
max(x1,x2,...,xn)返回最大值
min(x1,x2,.....xn)返回最小值
int(x) 将x变成整数,舍弃小数部分
float(x) 将x变成浮点数,增加小数部分
complex(x)将x变成复数,增加虚数部分
”天天向上的力量“问题分析:
基本问题:持续的价值
一年365天,每天进步1%,累计进步多少呢?
一年365天,每天退步1%,累计剩下多少呢?
问题一:千分之一的力量
1 #DayDayUpQ1.py 2 dayup = pow(1.001, 365) 3 daydown = pow(0.999, 365) 4 print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
运行结果如下图所示,千分之一的力量,最后的结局将近是两倍,不可小觑啊。
问题二:千分之五和百分之一的力量
一年365天,每天进步千分之五或1%,累计进步多少呢?
一年365天,每天退步七分之五或1%,累计剩下多少呢?
#DayDayUpQ2.py dayfactor = 0.005 dayup = pow(1+dayfactor, 365) daydown = pow(1-dayfactor, 365) print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
#DayDayUpQ2.py dayfactor = 0.01 dayup = pow(1+dayfactor, 365) daydown = pow(1-dayfactor, 365) print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
这就是使用变量的好处,只要改一个数字便可解决两个问题
运行结果如下图:
问题三:工作日的力量
一年365天,一周五个工作日,每天进步1%
一年365天,一周两个休息日,每天退步1%
这种休息日的力量如何呢?
1 #DayDayUpQ3.py 2 dayup = 1.0 3 dayfactor = 0.01 4 for i in range(365): 5 if i % 7 in [6,0]: 6 dayup = dayup*(1-dayfactor) 7 else: 8 dayup = dayup*(1+dayfactor) 9 print("工作日的力量:{:.2f} ".format(dayup))
运行结果如下图所示:尽管进步百分之一,但由于休息日的退步导致,效果在千分之一和千分之五之间
问题四:工作日的努力
工作日要努力到什么程度才能与每天努力1%一样
1 #DayDayUpQ4.py 2 def dayUP(df): 3 dayup = 1 4 for i in range(365): 5 if i % 7 in [6,0]: 6 dayup = dayup*(1 - 0.01) 7 else: 8 dayup = dayup*(1 + df) 9 return dayup 10 dayfactor = 0.01 11 while dayUP(dayfactor) < 37.78: 12 dayfactor += 0.001 13 print("工作日的努力参数是:{:.3f} ".format(dayfactor))
运行结果如下图所示:
工作日要达到2倍的努力效果才可以维持原来的状况
这就是,每天进步一点点的力量。
字符串类型的表示:
字符串:由0个或多个字符组成的有序字符序列
字符串由一对单引号或一对双引号表示(python默认使用单引号表示)
字符串是字符的有序序列,可以对其中的字符进行索引
"你"s ”你好啊,哈哈哈“的第0个字符
字符串的两类4种表示方法
由一对单引号或双引号表示,仅表示单行字符串
'C'或者"什么东西啊?"
由一对三单引号或三双引号表示,可以表示多行字符串
'''Python
语言 '''
"""Python
语言 """
和前面提到的多行注释格式相同,所以大家应该可以理解了。所为的多行注释也就是没有赋值给变量的字符串,野孩子。
那么为什么要设置两类四种表示方法呢
1、如果希望在字符串中包含双引号或单引号呢?
'哇"塞!'
"这里有个单'引'号"
2、如果希望既包括双引号又包括单引号呢?
'''22222222"""2'2'22"22222'''
字符串的序号:正向递增,反向递减
字符串的使用:
使用[ ]获取字符串的一个或多个字符
索引:返回字符串中的单个字符 <字符串>[M]
切片:返回字符串中的一段字符子串 <字符串>[M:N]
字符串切片高级用法:使用[M:N:K]根据步长对字符串进行切片
<字符串>[M:N],M表示至开头,N缺失表示至结尾
"01234567"[:3]结果是”012“
<字符串>[M:N:K],根据步长k对字符串进行切片
"0123456"[1:8:2]结果是”135“
”0123456“[::-1]结果是”6543210“
字符串的特殊字符:
转义符\
转义符表示特定字符的含义:
\b 回退
\n 换行
\r 回车
\' '
\" "
操作符及使用 | 描述 |
x+y | 连接两个字符串x和y |
n*x或x*n | 复制n次字符串x |
x in s | 如果x是s的子串返回True否则返回False |
获取星期几字符串
1 weekStr="一二三四五六日" 2 weekId=eval(input("请输入星期的数字(1-7):")) 3 print("星期"+weekStr[weekId-1])
字符串处理函数:一些以函数形式提供的字符串处理功能
函数及使用 | 描述 |
len(x) | 长度,返回字符串x的长度 |
str(x) | 任意类型x对应的字符串形式 |
hex(x)或oct(x) | 整数x的16进制和8进制小写模式 |
chr(x) x为unicode编码,返回其对应的字符
ord(x) x为字符,返回其对应的unicode编码
下面简单介绍一下unicode编码:python字符串的编码方式
1、统一字符编码,几乎覆盖了所有字符的编码方式
2、从0到1114111(0x10FFFF)空间,每个编码对应一个字符
3、python字符串中每个字符都是unicode编码字符
大家可以试试下面的python代码的运行结果:
1 >>>"1+1=2"+chr(10004) 2 >>>for i in range(12): 3 print(chr(9800+i),end="")#end=""的含义是结尾不换行
运行结果如上图所示。
下面我们学习一下字符串处理方法。
"方法"在编程中是一个专有名词
1、”方法“特指<a>.<b>()风格中的函数<b>()
2、方法本身也是函数,但与<a>有关,<a>.<b>()风格使用
3、字符串及变量也是<a>,存在一些方法
字符串的一些处理方法
方法及使用 | 描述 |
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 "AbCdEfGh".lower()结果为”abcdefgh“ |
str.split(sep=None) | 返回一个列表,由str根据sep被分隔的部分组成 ”A,B,C“.spilit(",")结果为['A','B','C'] |
str.count(sub) | 返回子串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串str副本,所有子串被替换为new |
str.center(width[,fillchar]) | 字符串str根据宽度width居中,fillchar可选 "python".center(20,"=")结果为 '=======python=======' |
str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 "=python=".strip(" =np")结果为 "ytho" |
str.join(iter) | 在iter变量除最后元素外,每个元素后增加一个str ",".join("12345")结果是 "1,2,3,4,5"#主要用于字符串分隔等 |
字符串类型的格式化:格式化是对字符串进行格式表达的方式:
字符串格式化使用.format()方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
{ }括起来的称为槽,默认顺序为0,1,2..........当然也可以如上图自定义顺序。
下面我们来详细学习一下format()方法 的格式控制方法
槽内部对格式化的配置方式
{<参数序号>:<格式控制标记>}
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
引导符号 | 用于填充的单个字符 | <左对齐 >右对齐 ^居中对齐 | 槽设定的输出宽度 | 数字的千位分隔符 | 浮点数小数精度或字符串最大输出长度 | 整数类型 b,c,d,o,x,X 浮点数类型 e,E,f,% |