python数字的表示

时间:2024-11-08 18:25:13

在这里插入图片描述

科学计数法

在这里插入图片描述

四舍五入

round() 方法返回浮点数x的四舍五入值。第二个参数就是保留几个小数,默认为0。如果不填第二个参数返回的是整数,否则类型与一样
int则是剪去小数部分,只保留前面的整数,即向零取整
int()不可以用于非整数的字符串
eval()可以运算,不能用于先导0的数字
在这里插入图片描述

类型转换

int(x [,base]) ⇒ 将x转换为一个十进制的整数 
long(x [,base]) ⇒ 将x转换为一个十进制的长整数 
float(x) ⇒ 将x转换为一个浮点数 
str(object) ⇒ 转换为字符串 
repr(object) ⇒ 转换为表达式字符串 
eval(str) ⇒ 用来计算在字符串中的有效Python表达式,并返回一个对象 
tuple(seq) ⇒ 将序列seq转换为一个元组 
list(seq) ⇒ 将序列seq转换为一个列表 
chr(x ) ⇒ 将一个整数转换为一个字符 
unichr(x ) ⇒ 将一个整数转换为Unicode字符 
ord(x ) ⇒ 将一个字符转换为它的整数值 
hex(x ) ⇒ 将一个整数转换为一个十六进制字符串 
oct(x ) ⇒ 将一个整数转换为一个八进制字符串

更多

在这里插入图片描述


# 16->2,8,10
a=int(input("16->2,8,10:"),base=16)
print("2:{:b}\n8:{:o}\n10:{:d}".format(a,a,a))

# 10->2,8,16
a = int(input("请输入一个十进制整数:"))
print("其对应二进制为{:b}\n八进制为{:o}\n十六进制为{:x}".format(a,a,a))


# 8->2,8,10
a = int(input("请输入一个八进制整数:"),base=8)
print("其对应二进制为{:b}\n八进制为{:o}\n十进制为{:d}".format(a,a,a))


# 2->8,10,16
a = int(input("请输入一个二进制整数:"),base=2)
print("八进制为{:o}\n十进制为{:d}\n其对应十六进制为{:x}".format(a,a,a))

在这里插入图片描述

基本运算

在这里插入图片描述
divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数
在这里插入图片描述

整数除运算符号 和 求余运算符 的分析

  • 整数除运算符号
>>> 9 // 4
2
>>> 9 // -4
-3
>>> -9 // 4
-3
>>> -9 // -4
2

原则:运算式 a // b,被除数 a ,除数 b , 余数c (a/b = k + c )需要在a到0范围内

9 = 4 * 2 + 1 =》 2    
9 = -4 * -3 - 3 =》 -3
-9 = 4 * -3 + 3  =》 -3
-9 = -4 * 2 - 1  =》 2
  • 求余运算符(需要结合上面的整数除运算)
>>> 9 % -4
-3
>>> -9 % 4
3
>>> (-9) % (-4)
-1
>>> -9 - ( -4 * 2)
-1

原则:
a%b=a-b倍数=a-b (a//b)= 余数c
也就是说,a对b取余就是计算a最多可以容纳多少个b,多出来的那部分就是余数。

# 9 % -4
9 = -4 * -3 - 3 =》 k=-3
9 - (-4) * -3 = -3 => c = -3

# -9 % 4
-9 = 4 * -3 + 3  => k = -3
-9 - 4 * -3  = 3  => c = 3

数学函数

需要

import math

在这里插入图片描述
还有(x) 弧度-》角度
(x) 角度-》弧度
,
对比 :
int()函数是“向0取整”,取整方向总是让结果比小数的绝对值更小
“整除”符号运算将结果忠实地向下取整,与()处理结果一样

如果我们坚持将值域限定为实数,并使用其近似的浮点数实现,就无法计算负数的平方根。
负数的平方根为虚数,而由实部和虚部组成的数为复数。Python标准库提供了一个专门用于处理
复数的模块。
>>> import cmath 
>>> cmath.sqrt(-1) 
1j
注意到这里没有使用from ... import ...。如果使用了这种import命令,将无法使用常规函
数sqrt。类似这样的名称冲突很隐蔽,因此除非必须使用from版的import命令,否则应坚持使用
常规版import命令。

常用函数

abs()
max() min()
pow(a,b)
round(x)
round(x,n)保留小数点后n位
常用更多函数

随机函数

在这里插入图片描述

函数范围

在这里插入图片描述
在这里插入图片描述

字符串的转换

Python 使用了
ord() 函数返回单个字符的编码,
chr() 函数把编码转成相应字符。

转移符号

在这里插入图片描述

运算符

在这里插入图片描述

字符串的用法特例

在这里插入图片描述

>>> eval(str(19)+'1')
191
>>> eval((str(19))+'+1')
20

格式化

在这里插入图片描述
格式:format(,item,format-specifier)

>>> print(format(1.2300,'1.3f'))
1.230
>>> print(round(1.23,2))
1.23
>>> print(round(1.2301,3))
1.23

<左对齐
字符串默认左对齐
数字默认右对齐

格式化%s %d %f

%s

# %s
print("%s")
string="HelloWorld"
# 1: %2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是helloWorld
print("string=%2s"%string)
print("string=%12s"%string)
print("string=%-12s\n"%string)

print("string="+format(string,"12s"))
print("string="+format(string,"<12s"))
print("string="+format(string,">12s"))
print()

# 2: %.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he
print("string=%.2s\n" % string)     # output: string=He

# 3: %a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,
#当截取的字符串长度小于a时,还需要在其左侧补空格
print("string=%7.2s\n" % string)           # output: string=     He

# 4: 还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定
print ("string=%*.*s\n" % (7,2,string)  )    # output: string=     He

在这里插入图片描述

%d
# %d
print("%d")
num=110
# 1:    %1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是110
print("num=%1d"%num)
# 2:    %4d意思是打印结果为4位整数,当整数的位数不够4位时,在整数左侧补空格,所以%3d的打印结果是 110
print("num=%4d"%num)
# 3:     %-4d意思是打印结果为4位整数,当整数的位数不够4位时,在整数右侧补空格,所以%3d的打印结果是110
print("num=%-4d"%num)
# 4       %05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00110
print ("num=%05d" % num )
# 5:      %.4d小数点后面的4意思是打印结果为4位整数,当整数的位数不够4位时,在整数左侧补0,所以%.4d的打印结果是0110
print ("num=%.4d" % num )
# 6:     %.004d小数点后面的0044一样,都表示4,意思是打印结果为4位整数,
print( "num=%.004d" % num)       # output: num=0110
# 7:    %5.4d是两种补齐方式的综合,当整数的位数不够4时,先在左侧补0,还是不够5位时,再在左侧补空格,
#规则就是补0优先,最终的长度选数值较大的那个,所以%5.4d的打印结果还是num= 0110
print ("num=%5.4d" % num)
# 8:    %05.4d是两种补齐方式的综合,当整数的位数不够4时,先在左侧补0,还是不够5位时,    
#由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.4d的打印结果还是num=00110    
print("num=%05.4d" % num) # output:num= 0110
# 9:    还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定
#如下,不过这种方式04就失去补0的功能,只能补空格,只有小数点后面的3才能补0
print( "num=%*.*d" % (0o5, 4, num)) # output: num= 0110
print( "num=%*.*d" % (5, 4, num)) # output: num= 0110

在这里插入图片描述

%f
print("%f")
import math
#%,a表示浮点数的打印长度,b表示浮点数小数点后面的精度    
# 1:    只是%f时表示原值,默认是小数点后5位数    
print("PI=%f"% )# output: PI=3.141593    
# 2:    #只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格 
print("PI=%9f"%)                # output: PI= 3.141593 
# 3:    只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0
print("PI=%"%)              # output: PI=003
# 4:    %6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格    
print("PI=%6.3f"%)               # output: PI=_3.142    
# 5:    %-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格 
print("PI=%-6.3f"%)               # output: PI=3.142
# 6:    还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定  
#如下,不过这种方式06就失去补0的功能,只能补空格  
print("PI=%*.*f" % (0o6, 3, ))               # output:PI= 3.142
print("PI=%*.*f" % (6, 3, ))               # output: PI= 3.142

在这里插入图片描述

Python3.6同时输入多个值

1. 同时输入多个字符串,字符串间以逗号间隔

a,b,c=input(‘三个字符串:’).split(‘,’) #得到字符串

a,b,c=eval(input(‘三个数字:’))# 得到整数

2. 同时输入多个数值,字符串间以空格间隔

a,b,c=map(eval,input(‘三个数字:’).split()) # 得到整数
a,b,c=input(‘三个字符串:’).split() #得到字符串

由于input( )输出的是用空格分开的字符串,split( )会分割开各个值并放到列表中,此时在列表中的值是字符串,如果要用于运算必须在map( )中利用int( )或者float( )等处理,再赋值。如果需要赋值的值都是字符串的话就没必要用map函数了。

处理浮点数存储的不精确性

计算机采用二进制存储浮点数时是不精确的,可能会存在误差
解决方案:导入模块decimal或fractions
其中,模块Decimal用于处理十进制的浮点数,模块Fractions用于处理分数

print(1.1 + 2.2 - 3.3)
print(1.1 + 2.2)

from decimal import Decimal
print(Decimal('1.1') + Decimal('2.2') - Decimal('3.3'))

from fractions import Fraction
print(Fraction(11, 10) + Fraction(22, 10) - Fraction(33, 10))


在这里插入图片描述