Python 学习笔记02(数据/流程)上

Author Avatar
EmptinessBoy 6月 23, 2020
  • 在其它设备中阅读本文章

数据类型

整数(int)

  • 与数学中整数概念一致
  • 整数可正可负
  • 默认情况下,整数采用十进制。其它进制需要
  • 增加相应的引导符号
进制符号示例十进制
二进制 :0b或0B0b102
八进制:0o或0O0o108
十六进制:0x 或0X0x1016

浮点数(float)

  • 与数学中的实数概念一致
  • 取值范围与精度都有限制

表示方式:

小数:1.23,3.14,-9.01
科学计数法:1.23x109 1.23e9

精度问题:浮点数运算存在不确定尾数,有误差!(可以用Round函数消除尾数)

python-float.png

python-float-round.png

复数(complex)

  • 与数学概念一致
  • 实部和虚部构成 (虚部使用 j 表示)
  • real 方法取实部,imag 方法取虚部

python-complex.png

运算

关系运算符同 JAVA

等于== , 不等于!= , 大于> , 大于等于>= , 小于< , 小于等于<=

逻辑运算

与或非(and or not)

赋值运算

这里用一个示例说明:

# 直接赋值
>>> a=8
>>> b=4
>>> print(a,b)
8 4

# 交换变量值
>>> a,b=b,a
>>> print(a,b)
4 8

#多个赋值
>>> i,j=[1,2]
>>> print(i,j)
1 2
>>> i,*j=[1,2,3]
>>> print(i,j)
1 [2, 3]
>>> i,j=[1,2,3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>>

算数运算符

加减乘除与数学中一致

浮点数除法 / (100/5 = 20.0)

整数除法 // (100//5 = 20)向左取整

取模 % (9%4 = 1)

幂 ** (2**3 为2的的三次方)

python-domath.png

math 函数

函数或常数功能
e自然常数
pi圆周率
log(x[,base])返回以base为底的对数,缺省为e
pow(x,y)返回x的y次方
sqrt(x)返回x的平方根
fabs(x)返回x的绝对值
round(x[,n])返回浮点数x的四舍五入值,n代表舍入到小数点后的位数
divmod(x,y)返回x和y的商和余数

字符串

引号

表示形式:(三引号表示多行文本)

单引号:'abc'
双引号:"hello"
三引号:'''hello
world '''

转义字符

符号含义
\反斜杠符号
'单引号
"双引号
\a响铃
\b退格(Backspace)
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\ooo最多三位 八进制,例如:\12代表换行
\xyy十六进制数,yy代表的字符,例如:\x0a代表换行

运算符

“+” 表示连接字符串
“*” 表示复制字符串

python-string-math.png

索引

>>> s = "emptinessboy"
>>> s[0]
'e'
>>> s[-1]
'y'
>>> s[0:3]
'emp'
>>>

[::-1]可以用来反转序列

例子:提取温度符号C前面的数字

用户输入 26C 则返回 26 ,用户输入 8C 则返回 8

>>> s = "26C"
>>> s[0:-1]
'26'
>>> s = "8C"
>>> s[:-1]
'8'
>>>

“:” 的前后可以省略,前面省略则为从头开始,后面省略则为到最后一个

格式化

传统方法 %

类似 Java,略有不同

( “%.2f” % (参数1, 参数2, ……) )

新方法

语法:

模板字符串.format(参数1,参数2 ……)

format() 方法的基本使用:

模板方法
:引导符号
<填充>用于填充的单个字符
<对齐><左对齐 >右对齐 ^居中对齐
<宽度>槽的设定输出宽度
,数字的千位分隔符适用于整数和浮点数
<.精度>浮点数小数部分的精度或字符串的最大输出长度
<类型>整数类型 b, c, d, o, x, X 浮点数类型 e, E, f, %
# 使用模板字符串
>>> s = "{} is {} years old"
>>> s.format("Emptinessboy",20)
'Emptinessboy is 20 years old'

# 使用名称
>>> s = "{name} is {age} years old"
>>> s.format(name="Emptinessboy", age=20)
'Emptinessboy is 20 years old'

# 控制精度
>>> a ,b = 6, 6.66
>>> s = "a={:2d},b={:.1f}"
>>> s.format(a,b)
'a= 6,b=6.7'
>>> s = "a={:<5d},b={:<5.1f}"
>>> s.format(a,b)
'a=6    ,b=6.7  '

特殊方法

str.find() 方法检测字符串中是否包含指定子字符串 ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法:

str.find("要查找的子字符串", beg=0, end=len(string))

str.strip() 方法可以去除字符串中的空格
str.upper() str.lower() 方法可以改变大小写

is类函数可以判断是否为某种类型:

isdigit() 判断是不是数字

如果要判断中文数字或者罗马数字 则需要使用isnumeric

res = 'Jason 666 heiheihei'
res.islower() # False  判断字符串是否是全小写的
res.isupper() # False  判断字符串是否是全大写的
res.istitle() # False  判断字符串英文单词是否都是首字母大写的

列表合成字符串 join()

前提是列表内本身就是字符串

>>> t = ["hi","/","emptinessboy"]
>>> ' '.join(t)
'hi / emptinessboy'

内置函数

转换函数

函数名含义
bool()根据传入的参数的逻辑值创建一个新的布尔值
int()根据传入的参数创建一个新的整数
float()根据传入的参数创建一个新的浮点数
complex()根据传入参数创建一个新的复数
str()创建一个字符串
ord()返回Unicode字符对应的整数
chr()返回整数所对应的Unicode字符
bin()将整数转换成2进制字符串
oct()将整数转化成8进制数字符串
hex()将整数转换成16进制字符串
list()根据传入的参数创建一个新的列表

示例:

>>> int("1a",16)
26
>>> int("10",8)
8
>>> int("  10 ")
10
>>> int(10)
10
>>>

随机函数库 random

要使用random库,先要用 “import random” 语句引入 random 库。

import random

random 库的常用函数

函数名含义示列
random.random()返回一个介于左闭右开[0.0, 1.0)区间的浮点数random.random()
random.uniform(a, b)返回一个介于【a,b】的浮点数。random.uniform(1,10)
random.randint(a,b)返回【a,b】的一个随机整整。random.randint(15,30)
random.randrange([start], stop, [step])从指定范围内,获取一个随机数random.randrange(10, 30, 2)
random.choice(sequence)从序列中获取一个随机元素random.choice([3,78,43,7])
random.shuffle(x)用于将一个列表中的元素打乱,即将列表内的元素随机排列random.shuffle(l) , l是序列
random.sample(sequence, k)从指定序列中随机获取长度为k的序列并随机排列random.sample([1,4,5,89,7],3)
random.seed(n)对随机数生成器进行初始化的函数,n代表随机种子。参数为空时,随机种子为系统时间random.seed(2)

序列操作函数

max() 可以从一个序列中返回序列中的最大值
min() 可以从一个序列中返回序列中的最小值
len() 可以求序列长度

This blog is under a CC BY-NC-ND 4.0 Unported License
本文链接:https://coding.emptinessboy.com/2020/06/Python-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B002%EF%BC%88%E6%95%B0%E6%8D%AE-%E6%B5%81%E7%A8%8B%EF%BC%89%E4%B8%8A/