python是没有精度限制的,可以处理很大的数据。
对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d
浮点数的精确度就不如整数那么高了,
解决方法:
引入decimal
import decimal a=decimal.Decimal('0.1') b=decimal.Decimal('0.2') c=decimal.Decimal('0.3') a+b==c注意,此时,这个0.1+0.2=0.3的abc存的不是数字,而是decimal对象
还可以用浮点数表示:
5e-5,就是5*10的负五次方,就是0.00005
科学计数法也无法实现精密计算
何为地板除呢?
与c不同,3/2在python里=1.5
而//地板除就是起到向下取整的效果。比如:3//2=1
-3//2=-2(因为=-1.5,向下取整是-2)
bool()可以返回是true还是false
true类型很多:非0数(整数浮点数都算),字符串等等
false类型很少:
fraction(0,1)表示的是分子为0,分母为1的有理数
【and就是&&,or就是||,not就是! 感觉python比较偏自然语言诶】
why?这是因为and和or要遵从短路逻辑
比如3and4=4,3and啥?结果不等,需要读入4,此时,因为and的特性(全1才1),3已经是1了,影响结果的关键节点就是4,所以输出4
4or5=4,也是同理,or的特性是有1就1,4是“1”,所以直接定下这个式子的结果就是“1”,输出左右结果的关键——4
同理,0and4=0
0or4=4
而c语言就不是这样的:2&&3=1 0&&4=0;即,它算完真假后,真=1,假=0
python的变量不用先声明再使用,但是,它必须先赋值再使用(不会赋值就赋个0)
else if=elif
assert关键字:当assert 条件:条件为真,正常运行;条件为假,程序崩溃,抛出AssertionError的异常
语法:
for 目标 in 表达式:
循环体
