数字类型及操作
整数类型
与数学证书概念一致,可正可负,没有取值范围的限制
-pow(x,y)函数:计算x的y次方,想算多大算多大
eg:pow(2,100)表示2的一百次方
浮点类型
带有小数点及小数的数字,浮点数取值范围和小数精度都存在于限制,但常规计算可忽略,取值范围数量级约-10的308次方至10的308次方精确数量级10的-16次方。,浮点数间运算存在不确定尾数,会有二进制和十进制
eg.round(x,d):对四舍五入,d是小数截取位数,浮点数间运算比较用
科学计数法 <a> e <b>
表示a乘以10的b次方
eg.4.4e-3值为0.0043 9.6E5值为960000.0
浮点数存在不确定位数用round()
复数类型
z = 1.23e-4+5.6e+89j表示z.real获得实部z.imag获得虚部
数值运算操作符
操作符是完成运算的一种符号体系
x/y表述x与y的商
x//y表示整数除,x与y之整数商,10//3结果是3
+x
表示x的本身
-y表示y的负值
x%y表示余数,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、x/ =y、x// =y,x% =y,x** =y
输入>>>x=3.1415
>>>x**=3
表示x=x**3等价,即x等于3的3.14次方
数值运算函数
函数及使用 | 描述 |
---|---|
abs(x) | 绝对值,x的绝对值 |
divmod(x,y) | 商余,(x//y,x%)同时输出商和余数divmod(10,3)结果为(3,1) |
pow(x,y[,z]) | 幂余,(x**y)%z,[…]表述参数z可省略eg.pow(3,pow(3,99),10000)结果为4587 表示3的99次方 |
round(x[,d]) | 四舍五入,d是保留小数位数,默认值为0,round(-10.123,2结果为-10.12) |
int(x) | 将x变为整数,舍弃小数部分 eg。int(123.45)结果为123;int(“123”)结果为123 |
float(x) | 将x变成浮点小数,增加小数部分float(12)结果为12;float(“1.23”)结果为1.23 |
complex(x)将x变成复数,增加虚数部分complex(4)结果为4+0j |
实例
天天向上
1、每天进步1%和退部1%
dayup = pow(1.001, 365) #1.001的365次方命名为
daydown = pow(0.999, 365)
print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))
2、5%和1%的力量
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))
表示1.005的365次方
0.995的365次方,优化定义变量dayfactor
3、工作日的力量
365天,一周5个工作日,每天进步1%
365天,一周2个休息日,每天退步1%
dayup = 1.0
dayfactor = 0.01
for i in range(365):
if i%7 in [6,0]: #0-6是七个数
dayup = dayup*(1-dayfactor)#休息
else:
dayup = dayup*(1+dayfactor)#工作
print("工作日力量:{:.2f}".format(dayup))
4、工作日的努力
工作模式要努力到什么水平,才能与每一天努力1%一样?
A:一年365天,每天进步,不停歇
B:一年365天,每周工作5天休息两天,休息日下降1%,要多努力?
分析:采用for…in(计算思维)def…while试错方法
编译函数,根据df菜蔬计算工作日力量的函数参数不同,这段代码可共用def保留字用于定义函数
利用循环语句试错
def dayUp(df): #用df表示deyfactor简写
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
df = 0.01
while dayUp(df) < 37.78: #while保留字判断条件是否成立条件成立时循环执行
df +=0.001
print("工作日的努力参数是:{:.3f}".format(df))
说明每天要努力到1.9%才能与常人持平
字符串
1、表示 “” 或‘’或“‘ “’表示多行字(三个可以跨行)
eg:“如果外面有双引号('括号就是字符串)”
‘如果有个单引号(“这是字符串)’
”’这里既有单引号(’)又有双引号(")“‘
2、用[]获取字符串中一个或多个字符
索引:返回字符串中单个字符 <字符串>[M]
eg:“请输入带有符号的温度值”[0] 或者 Tempstr[-1]
切片:返回字符串中一段字符子串 <字符串>[M:N]
“输入带有符号的温度值:”[1:3]或者 TempStr[0:-1]
使用[M:N],M缺失表示至开头,N缺失表示至结尾
“0123456789十”[:3]结果是“012” 表示从最开始起到第三个为止
“0123456789十”[1:8:2]结果是“1357” 表示以第一位开始到第八位结束,步长为2
“0123456789十”[::-1]结果是“十9876543210” 表示逆序
转义符
转义符表达特定字符的本意
“这里有个双引号(")”结果表示“这里有个双引号(“)”
即字符串被转义
\b回退
\n表述换行
\r表示回车
字符串操作符
x + y 链接两个字符串x和y
x*y 将x复制y次
x in s 表示x是s的子串,返回True,否则返回False
获取星期字符串
输入:1-7的整数,表示星期几
输出:输入整数对应的星期字符串
例如:输入3,输出 星期三
思想:根据很长的字符串在其中进行切片在切片中运行,很好完成一个星期字符串的输出
例1、
weekStr = "星期一星期二星期三星期四星期五星期六星期日" #定义输入
weedId = eval(input("请输入星期数字(1-7):")) #保留输入数字
pos = (weedId - 1) * 3 #算出起始相应的位置
print(weekStr[pos: pos+3])#取出对应的星期对应在屏幕中
例2、
weekStr = "星期一星期二星期三星期四星期五星期六星期日" #定义输入
weedId = eval(input("请输入星期数字(1-7):")) #保留输入数字
print("星期" + weekStr[weedId-1])#取出对应的星期对应在屏幕中
字符串处理函数
函数及使用 | 描述 |
---|---|
len() | 表示长度 eg:len(“123456”)结果为6 |
str() | 任意类型x所对应的字符串形式eg:str(1.23)结果”1.23“ str([1,2])结果为”[1,2]” |
hex()或oct() | 整数x的十六进制或八进制小写形式字符串eg:hex(425)结果“0x1a9” |
chr(u) | u为unicode编码,返回其对应的字符 |
ord() | x为字符,返回其对应的Unicode编码 |
unicode
python字符串的编码方式,每个编码对应一个字符。
"1 + 1 = 2 " + chr(10004)
‘1 + 1 = 2 √’
十二星座unicode编码
for i in range(12):
...: print(chr(9800 + i), end="")
...:
♈♉♊♋♌♍♎♏♐♑♒♓
常见方法
常见方法及使用 | 描述 |
---|---|
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 “AbCdEfGh”.lower()结果为“abcdefgh” |
str>split(sep=None) | 返回一个列表,由str根据sep被分隔的部分组成eg:“A,B,C”.split结果为[‘A’, ‘B’, ‘C’] |
str.count(sub) | 返回子串sub在str中出现的次数 “an apple a day”.count(“a”)结果为4 表示a出现的次数 |
str.replace(old,new) | 返回字符串副本,所有的old子串被替换为new。eg:“python”.replace(“n”, “n123.io”)结果为“python123.io” |
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”主要用于分割字符 |
字符串格式化
需要一个槽{ }
应用“{}1{}2{}3”.format”1,2,3“,表示按照字符串中槽{}的默认顺序,对应在format()中参数的顺序
引导符号 | : |
---|---|
用于填充的单个字符 | <填充> |
< 左对齐 >右对齐 ^居中对齐 | <对齐> |
槽设定的输出宽度 | <宽度> |
数字的千位分隔符 | <,> |
浮点数小数精度或字符串最大长度 | <.精度> |
整数类型b,c,d,o,x,X浮点数类型e,E,F,% | <类型> |
eg"{0:=^20}".format(“python”) 结果为'=======python======='
槽中:引导,=表示填充 ,^表示居中对齐,20表示宽度
eg:“{0:*>20}”.format(“BIT”)
*表示填充,>表示右对齐,20表示为宽度
eg"{0:,.2f}".format(12345.6789)结果为’12,345.68’
:表示引出,,表示千位分隔符,.表示小数点后两位,f表示浮点类型
eg"{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}".format(425)结果为’110101001, Ʃ, 425, 651, 1a9, 1A9’
b表示二进制,c表示编码,d表示10进制,o表示八进制,x是16进制,X是大写的16进制。
eg"{0:e}, {0:E}, {0:f}, {0:o}, {0:%}".format(3.14)结果为’3.140000e+00, 3.140000E+00, 3.140000, 314.000000%’
e表示科学计数法浮点数,E表示E形式科学计数法浮点数,f表示以通常非科学计数法,%表示已百分数形式表示浮点数。