python各位数字之和为5的数_Python从菜鸟到⾼⼿(5):数
1 基础知识
Python语⾔与其他编程语⾔⼀样,也⽀持四则运算(加、减、乘、除),以及圆括号运算符。在Python语⾔中,数字分为整数和浮点数。整
数就是⽆⼩数部分的数,浮点数就是有⼩数部分的数。例如,下⾯的代码是标准的四则运算表达式。
2 + 44 * 5 + 205.
3 / 7(30 + 2) * 12
如果要计算两个数的除法,不管分⼦和分母是整数还是浮点数,使⽤除法运算符(/)的计算结果都是浮点数。例如1/2的计算结果是python格式化输出format
0.5,2/2的计算结果是1.0。要想让Python解释器执⾏整除操作,可以使⽤整除运算符,也就是两个斜杠(//)。使⽤整除运算符后,1 //
2的计算结果是0,2 // 2的结果是1。
整除运算符不仅能对整数执⾏整除操作,也能对浮点数执⾏整除操作,在执⾏整除操作时,分⼦分母只要有⼀个是浮点数,那么计算结果就
是浮点数。例如,1.0 // 2的计算结果是0.0,2.0 // 2的结果是1.0。
除了四则运算符外,Python还提供了两个特殊的运算符:%(取余运算符)和**(幂运算符)。取余运算符⽤于对整数和浮点数执⾏取余操作。
例如,5 % 2的计算结果是1,⽽5.0 % 2的计算结果是1.0。从这⼀点可以看出,%和//类似,只要分⼦分母有⼀个是浮点数,计算结果就
是浮点数。
幂运算符⽤于计算⼀个数值的幂次⽅。例如,2 ** 3的计算结果是8,3.2 ** 2的计算结果是10.24。
到现在为⽌,⼀共介绍了8个运算符,它们是圆括号((…))加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)和幂运算符(**)。其中减号(-)也可
以⽤于负号(⼀元运算符),所以现在涉及到9个运算符。既然涉及到这么多运算符,那么就有⼀个优先级的问题,也就是说,同⼀个表达式
中包含有多个不同的运算符,需要先计算优先级⾼的运算符,如果优先级相同个,那么就按从左向右的顺序执⾏。
这9个运算符的优先级顺序如下图所⽰。越靠前优先级越⾼,同⼀⾏的运算符的优先级相同。
下⾯的代码演⽰了Python语⾔中运算符的使⽤⽅法,在编写Python代码时,应该注意运算符的优先级问题。
print(2 + 4)                        #  运算结果:6print(126 - 654)                    #  运算结果:-528print(6 + 20 * 4)                  #  运算
结果:86print((20 + 54) * 30)              #  运算结果:2220print(1/2)                          #  运算结果:
0.5print(1//2)                    #  运算结果:0print(3/2)                          #  运算结果:1.5print(3//2)                    #  运算结果:
1print(4**3)                    #  运算结果:64print(3 + 5 * -3 ** 4 - (-5)**2)    #  运算结果:-427#  ⽤变量操作数值x = 30
y = 50
k = 10.2print(x + y * k)                    #  运算结果:540.0
2 ⼤整数
对于有符号32位整数来说,可表⽰的最⼤值是2147483647(2^31 -1),可表⽰的最⼩值是-2147483648(-2^31),如果超过这个范
围,有符号32位整数就会溢出。不过在Python语⾔中,可以处理⾮常⼤的整数,并不受位数限制。例如,下⾯表达式的输出结果就超出了
32位整数的范围。print(2 ** 35)      # 输出2的35次幂,输出结果是34359738368
让我们再换个更⼤的数,看看会不会溢出。print(2**630  * 100000)    # 2的630次幂再乘10万
上⾯这⾏代码的输出结果如下:4455508415646675018204269146191690746966043464109921807206242693261010905477224010259680479
很显然,Python语⾔仍然可以正确处理2**630 * 100000的计算结果。因此,在Python语⾔中使⽤数字不需要担⼼溢出,因为Python语
⾔可以处理⾮常⼤的数字,这也是为什么很多⼈使⽤Python语⾔进⾏科学计算和数据分析的主要原因之⼀。
3. ⼆进制、⼋进制和⼗六进制
Python语⾔可以表⽰⼆进制、⼋进制和⼗六进制数。表⽰这3个进制的数,必须以0开头,然后分别跟着表⽰不同进制的字母。表⽰⼆进制
的字母是b,表⽰⼋进制的字母是o(这是英⽂字母中⼩写的o,不要和数字0搞混了),表⽰⼗六进制的字母是x。因此,⼆进制数的正确写法
是0b110011,⼋进制数的正确写法是0o56432,⼗六进制数的正确写法是0xF765A。
除了这3种进制外,前⾯章节⼀直使⽤的是⼗进制。因此,Python语⾔⼀共可以表⽰4种进制:⼆进制、⼋进制、⼗进制和⼗六进制。Python语⾔提供了⼀些函数⽤于在这4种进制数之间进⾏转换。
如果是从其他进制转换到⼗进制,需要使⽤int函数,该函数有两个参数,含义如下:
· 第1个参数:字符串类型,表⽰待转换的⼆进制、⼋进制或⼗六进制数。参数值只需要指定带转换的数即可,不需要使⽤前缀,如⼆进制直接指定11011,不需要指定0b11011。
· 第2个参数:数值类型,表⽰第1个参数值的进制,例如,如果要将⼆进制转换为⼗进制,第2个参数值就是2。
int函数返回⼀个数值类型,表⽰转换后的⼗进制数。
下⾯的代码将⼆进制数110011转换为⼗进制数,并输出返回结果。print(int("110011",2))    // 输出结果:51
如果要从⼗进制转换到其他进制,需要分别使⽤bin、oct和hex函数。bin函数⽤于将⼗进制数转换为⼆进制数;oct函数⽤于将⼗进制数转换为⼋进制数,hex函数⽤于将⼗进制数转换⼗六进制数。这3个函数都接收⼀个参数,就是待转换的⼗进制数。不过要注意,这3个函数的参数值也可以是⼆进制数、⼋进制数和⼗六进制数,也就是说,这3个函数可以在⼆进制、⼋进制、⼗进制和⼗六进制之间互转。
下⾯的代码将⼗进制数54321转换为⼗六进制数,并输出转换结果。print(hex(54321))      # 输出结果:0xd431
下⾯的代码演⽰了Python语⾔中⼆进制、⼋进制、⼗进制和⼗六进制数之间的转换。print(0b110011) 
          # 输出⼆进制数
print(0o123)                    # 输出⼋进制数print(0xF15)                    # 输出⼗六进制数print(bin(12))                  # ⼗进制转⼆进制,输出结果:0b1100print(int("10110",2))          # ⼆进制转⼗进制,输出结果:22print(int("0xF35AE",16))        # ⼗六进制转⼗进制,输出结果:996782print(hex(54321))              # ⼗进制转⼗六进制,输出结果:0xd431print(bin(0xF012E))        # ⼗六进制转⼆进制,输出结果:0b11110000000100101110print(hex(0b1101101))          # ⼆进制转⼗六进制,输出结果:
0x6dprint(oct(1234))                # ⼗进制转⼋进制,输出结果:0o2322print(int("76532", 8))          # ⼋进制转⼗进制,输出结果:32090
程序运⾏结果如下图所⽰。
4 数字的格式化输出
在输出数字时,有时需要对其进⾏格式化。例如,在输出12.34时,只希望保留⼩数点后1位数字,也就是12.3,或整数位按6位输出,不⾜前⾯补0,也就是000012.34。Python语⾔中提供了format函数⽤于对数字进⾏格式化。format函数有两个参数,含义如下:
· 第1个参数:要格式化的数字。
· 第2个参数:格式字符串。
format函数的返回值就是数字格式化后的字符串。
下⾯的代码演⽰了format函数在格式化数字⽅⾯的应⽤。x = 1234.56789# ⼩数点后保留两位数,输出结
果:'1234.57'print(format(x, '0.2f'))
# 数字在12个字符长度的区域内右对齐,并保留⼩数点后1位数字,# 输出结果:'      1234.6'      print(format(x, '>12.1f'))
# 数字在12个字符长度的区域内左对齐,并保留⼩数点后3位数字,紧接着输出20,# 输出结
果:'1234.568    20'print(format(x, '<12.3f'), 20)# 数字在12个字符长度的区域内右对齐,并保留⼩数点后1位数字,数字前⾯补
0,# 输出结果:'0000001234.6'print(format(x, '0>12.1f'))# 数字在12个字符长度的区域内左对齐,并保留⼩数点后1位数字,数字后⾯补0,# 输出结果:'1234.6000000'print(format(x, '0<12.1f'))# 数字在12个字符长度的区域内中⼼对齐,并保留⼩数点后2位数字,紧接着输出3,# 输出结果:'  1234.57  3'print(format(x, '^12.2f'),3)# 每千位⽤逗号(,)分隔,输出结果:
1,234.56789print(format(x, ','))# 每千位⽤逗号(,)分隔,并保留⼩数点后2位数字,输出结果:1,234.57print(format(x, ',.2f'))# ⽤科学计数法形式输出数字,输出结果:1.234568e+03print(format(x, 'e'))# ⽤科学计数法形式输出数字,尾数保留⼩数点后2位数字,输出结果:1.23E+03print(format(x, '0.2E'))
程序运⾏结果如下图所⽰。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。