2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python decimal_连载|想用Python做自动化测试?了解数值计算和随机数生成神器

python decimal_连载|想用Python做自动化测试?了解数值计算和随机数生成神器

时间:2019-12-30 01:01:54

相关推荐

python decimal_连载|想用Python做自动化测试?了解数值计算和随机数生成神器

本文掌握Python中的几种数值类型,以及算术运算、位运算、数值转换,再学习一个测试中常用来产生随机数的模块。

构建测试知识体系,欢迎关注

Python支持的数值类型有整型int、布尔型bool、浮点型float、Decimal。

type(100) # <class 'int'>type(1.0) # <class 'float'>type(True) # <class 'bool'>type(False) # <class 'bool'>

这里要提一下,布尔型是只有两个值的整数。True对应1,False对应0。对于布尔型要从以下方面理解:

有两个值True和False

对于值为零的任何数字或者空集(空列表[]、空元组()、空集合{}、空字典{}),他们的布尔值都是False

01

算术运算

加法+

减法-

乘法*

除法/

取余%

幂运算**或pow

取商和余数divmod

四舍五入round

绝对值abs

>>> 5+27>>> 5-32>>> 5*210>>> 5/22.5>>> 5%21>>> 5**225>>> pow(5,2)25>>> divmod(5,2)(2, 1)>>> round(1.314, 2) # 保留两位小数,第三位四舍五入1.31>>> round(2.5) # 值刚好等于两个整数中间时,得到举例最近的偶数2>>> round(1.5) # 值刚好等于两个整数中间时,得到举例最近的偶数2>>> round(2.6)3>>> abs(-0.5)0.5

02

位运算

将数值转成二进制后,按位操作。

按位取反~

按位与&

按位或|

按位异或^

左移<<

右移>>

>>> 30 & 4512>>> 30 | 4563>>> 30 ^ 4551>>> ~30-31>>> 3<<212>>> 8>>2

03

数制转换

bin(),将十进制转换为二进制

oct(),将十进制转换为八进制

hex(),将十进制转换为十六进制

>>> bin(10) # '0b1010'>>> oct(9) # '0o11'>>> hex(15) # '0xf'

04

比较运算

大于>

小于<

等于==

大于等于>=

小于等于<=

不等于!=

>>> 5>3 # True>>> 5<3 # False>>> 5==3 # False>>> 5>=3 # True>>> 5!=3 # True>>> 5<=3 # False

05

decimal模块

普通的float型数据在运算时,是有误差的,python默认的是17位小数的精度,再长后面的数据就不准了。如果不能接受误差,可以使用decimal模块解决精确计算问题。

a = 3b = 1c = b/aprint(c) # 0.3333333333333333d = "%.30f" % (1/3)print(d) # 0.333333333333333314829616256247e = Decimal(1)/Decimal(3)print(e) # 0.3333333333333333333333333333 ,默认28位,可调

06

random模块

在测试工作中,构造随机数类型的测试数据时,经常用使用random这个模块。它能够产生随机整数、小数,还能随即从列表和元组或者字符串中提取随机元素。

import randomimport stringprint(random.randint(1, 10)) # 产生 1 到 10 的一个整数型随机数print(random.random()) # 产生 0 到 1 之间的随机浮点数print(random.uniform(1.1, 5.4)) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数print(random.choice('tomorrow')) # 从序列中随机选取一个元素print(random.choice(['剪刀', '石头', '布']))print(random.randrange(1, 100, 2)) # 生成从1到100的间隔为2的随机整数print(random.sample('zyxwvutsrqponmlkjihgfedcba', 5)) # 生成5个字符组成的列表print(''.join(random.sample(string.ascii_letters + string.digits, 8))) # 从a-zA-Z0-9生成指定数量的随机字符a = [1, 3, 5, 6, 7] random.shuffle(a) # 将序列a中的元素顺序打乱print(a)

说到随机数作为测试数据,Python中还有一个非常好用的产生随机数的第三方包Faker(/project/Faker/)。安装方法是:

pip install Faker

它的功能特别强大,能够产生的随机数类型非常丰富,举几个例子:

from faker import Faker#Faker.seed(4321)#随机数种子fake = Faker('zh_CN')print(fake.name())print(fake.address())print(fake.city())print(fake.postcode())print(pany())print(fake.email())print(fake.hostname())print(fake.ipv4())

从名字可以看出产生的随机数的类型。

如果想要每次生成的随机数是固定的。可以提供一个随机数种子,这样相同的方法,总会得到相同的随机结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。