Chapter 3
Numbers, Dates, and Times
舍入小数到某一指定小数点
1
2round(1.23, 1) # 1.2
round(1.27, 1) # 1.3采用四舍五入,如果第二个参数为负数,那么就会指示十位百位,,,以此类错
1
round(1627731, -1) # 1627730
进行准确的十进制计算
1
2
3
4
5# Python, js等语言均有类似的问题
a = 4.2
b = 2.1
a + b # 6.300000000000001
(a + b) == 6.3 # False想要避免这种问题,使用
Decimal
1
2
3
4
5
6from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
a + b # Deciaml('6.3')
(a + b) == Decimal('6.3') # True
(a + b) == 6.3 # FalsePython中的8进制与其他的语言不太相同
二进制以0b
开头
十六进制以0x
开头
八进制以0o
开头
所以1
2
3os.chmod('script.py', 0755) # error
## 改为以下
os.chmod('script.py', 0o755) # error不仅仅可以从
math
中引入inf
,也可以直接使用float('inf')
来创建,同样的还有float('nan')
float('-inf')
但是需要注意的是,nan
之间无法进行相等判断(inf
可以),如所以如果要测试某一个数是否是1
2
3
4a = float('nan')
b = float('nan')
a == b # False
a is b # Falsenan
,最好的办法就是使用math.isnan
,虽然inf
本身可以比较,但是也可以使用math.isinf
来判断
使用
Fraction
来进行分数计算1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from fractions import Fraction
a = Fraction(5, 4)
b = Fraction(7, 16)
a + b # 27/16
# 转化为小数
float(a)
# 获得分子与分母
## 分子
a.numerator # 5
a.denominator # 4
# 创建时,如果可以约分将自动约分,且通过`numerator`/`denominator`获得的分子分母也为约分之后的分子分母
c = Fraction(4, 18) # 等同于 c = Fraction(2, 9)
# 可以将一个小数直接转化为分数
d = 3.75
y = Fraction(*x.as_integer_ratio()) # Fraction(15, 4)
## 但是同样有可能遇到问题
Fraction(*1.2.as_integer_ratio()) # Fraction(5404319552844595, 4503599627370496)
## 可以通过上述的Decimal来获得正确的结果
d = Decimal('1.2')
Fraction(*d.as_integer_ration()) # (6,5)Python中的list可以通过乘法来扩展
1
2a = [1]
a * 10 # [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]同样可以扩展到字符串
1
2a = '123'
a * 2 # '123123'有时候会很有用,尤其是字符串
日期相关
用到再看,虽然csp里面好几次有相关的题目,奈何确实太繁琐