韩国美食网站建设目的,织梦做网站教程,装饰公司怎样做网站,那种网站建设软件最好进制
现代的计算机和依赖计算机的设备里都用到二进制(即0和1)来保存和表示数据#xff0c;一个二进制表示一个比特(Bit)。
在二进制的基础上#xff0c;计算机还支持八进制和十六进制这两种进制。
除了计算机里的进制以外#xff0c;我们生活中经常用到的是十进制。
Pyt…进制
现代的计算机和依赖计算机的设备里都用到二进制(即0和1)来保存和表示数据一个二进制表示一个比特(Bit)。
在二进制的基础上计算机还支持八进制和十六进制这两种进制。
除了计算机里的进制以外我们生活中经常用到的是十进制。
Python语言支持二进制、八进制、十六进制以及十进制的数字表示。
a 12 # 默认数字是十进制
print(a 1) b 0b11101 # 以0b开头的数字是二进制
print(b 1) c 0o12 # 以 0o 开头的数字是八进制
print(c 1) d 0x1A # 以 0x 开头的数字是十六进制
print(d 1)
进制转换
不同进制的数字之间可以通过一定的计算规则相互转换。 类型转换 函数 说明 int(x [,base ]) 将x转换为一个整数 float(x) 将x转换为一个浮点数 str(x) 将对象 x 转换为字符串 bool(x) 将对象x转换成为布尔值
转换成为整数
print(int(123)) # 123 将字符串转换成为整数 print(int(123.78)) # 123 将浮点数转换成为整数 print(int(True)) # 1 布尔值True转换成为整数是 1
print(int(False)) # 0 布尔值False转换成为整数是 0
# 以下两种情况将会转换失败
123.456 和 12ab 字符串都包含非法字符不能被转换成为整数会报错
print(int(123.456))
print(int(12ab)) # 使用int()函数进行类型转换时还可以传入两个参数第二个参数用来表示进制。
print(int(21,8)) # 输出的结果是17.八进制的21,对应的十进制数字是17
print(int(F0,16)) # 输出的结果是240.十六进制的F0,对应的十进制数字是240 以下写法会报错。八进制里允许的最大值是7,所以 29 不是一个合法的八进制数
print(int(29,8)) 转换成为浮点数
f1 float(12.34)
print(f1) # 12.34
print(type(f1)) # float 将字符串的 12.34 转换成为浮点数 12.34 f2 float(23)
print(f2) # 23.0
print(type(f2)) # float 将整数转换成为了浮点数
转换成为字符串
str1 str(45)
str2 str(34.56)
str3 str(True)
print(type(str1),type(str2),type(str3))
转换成为布尔值
print(bool())
print(bool())
print(bool(0))
print(bool({}))
print(bool([])
print(bool(())
print(bool(None) 在python中只有空字符串,数字0,空字典{},空列表[],空元组(),和空数据None会被转换成为False,其他的都会被转换成为True 算数运算符
下面以a10 ,b20为例进行计算。 运算符 描述 实例 加 两个对象相加 a b 输出结果 30 - 减 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 / 除 b / a 输出结果 2 // 取整除 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 % 取余 返回除法的余数 b % a 输出结果 0 ** 指数 a**b 为10的20次方 输出结果 100000000000000000000 () 小括号 提高运算优先级比如: (12) * 3
注意混合运算时优先级顺序为 ** 高于 * / % // 高于 - 为了避免歧义建议使用 () 来处理运算符优先级。 并且不同类型的数字在进行混合运算时整数将会转换成浮点数进行运算。 10 5.5 * 221.0 (10 5.5) * 231.0
算数运算符在字符串里的使用
如果是两个字符串做加法运算会直接把这两个字符串拼接成一个字符串。
In [1]: str1 hello In [2]: str2 world In [3]: str1str2
Out[3]: helloworld In [4]:
如果是数字和字符串做加法运算会直接报错。
In [1]: str1 hello In [2]: a 2 In [3]: astr1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last) in
---- 1 astr1 TypeError: unsupported operand type(s) for : int and str
如果是数字和字符串做乘法运算会将这个字符串重复多次。
In [4]: str1 hello In [5]: str1*10
Out[5]: hellohellohellohellohellohellohellohellohellohello 赋值运算符
基本赋值运算符 运算符 描述 实例 赋值运算符 把 号右边的结果 赋给 左边的变量如 num 1 2 * 3结果num的值为7
# 单个变量赋值 num 10 num10
# 同时为多个变量赋值(使用等号连接) a b 4 a4 b4 # 多个变量赋值(使用逗号分隔) num1, f1, str1 100, 3.14, hello num1100 f13.14 str1hello
# 语法错误值的个数超过变量的个数赋值失败 num1,num2(1,2,3)
Traceback (most recent call last): File stdin, line 1, in module
ValueError: too many values to unpack (expected 2)
# 语法错误变量的个数超过值得个数赋值失败 num1,num2,num3,num4(1,2,3)
Traceback (most recent call last): File stdin, line 1, in module
ValueError: not enough values to unpack (expected 4, got 3)
复合赋值运算符 运算符 描述 实例 加法赋值运算符 c a 等效于 c c a - 减法赋值运算符 c - a 等效于 c c - a * 乘法赋值运算符 c * a 等效于 c c * a / 除法赋值运算符 c / a 等效于 c c / a // 取整除赋值运算符 c // a 等效于 c c // a % 取模赋值运算符 c % a 等效于 c c % a ** 幂赋值运算符 c ** a 等效于 c c ** a
# 示例 a 100 a 1 # 相当于执行 a a 1 a101
# 示例* a 100 a * 2 # 相当于执行 a a * 2 a200
# 示例*运算时符号右侧的表达式先计算出结果再与左边变量的值运算 a 100 a * 1 2 # 相当于执行 a a * (12) a300
注意赋值运算符是从右往左运算将等号右边的值赋值给等号左边所以等号的左边一定不能是常量或者表达式。 比较运算符
以下假设变量a为10变量b为20 运算符 描述 实例 等于 - 比较对象是否相等 (a b) 返回 False. ! 不等于 - 比较两个对象是否不相等 (a ! b) 返回 true. 不等于 - 比较两个对象是否不相等 (a b) 返回 true。这个运算符类似 ! 。 大于 - 返回x是否大于y (a b) 返回 False。 小于 - 返回x是否小于y。所有比较运算符返回1表示真返回0表示假。这分别与特殊的变量True和False等价。 (a b) 返回 true。 大于等于 - 返回x是否大于等于y。 (a b) 返回 False。 小于等于 - 返回x是否小于等于y。 (a b) 返回 true。
字符串使用比较运算符
数字和字符串做运算结果是false,除了 以外的逻辑运算时会直接报错。
In [3]: str1a
Out[3]: False
In [4]: str1a
---------------------------------------------------------------------------
TypeError Traceback (most recent call last) in
---- 1 str1a TypeError: not supported between instances of str and int In [5]: str1 in
---- 1 str1
如果是两个字符串进行比较会将每个字符都转换成对应的编码然后逐一进行对比。
In [1]: str1a
In [2]: str2ABC # 将字符转换成为对应的编码 a对应的编码是97,A对应的编码是65
In [3]: str1 str2
Out[3]: True 逻辑运算符 运算符 逻辑表达式 描述 实 and x and y 只要有一个运算数是False结果就是False; 只有所有的运算数都为True时结果才是True 做取值运算时取第一个为False的值如果所有的值都为True,取最后一个值。 True and True and False--结果为False True and True and True--结果为True 1 and 0 and 2--结果是0;1 and 2 and 3--结果是3 or x or y 只要有一个运算数是True结果就是True; 只有所有的运算数都为False时结果才是False 做取值运算时取第一个为True的值如果所有的值都为False,取最后一个值。 False or False or True--结果为True False or False or False--结果为False 1 or 0 or 2--结果是1;0 or None or () or or {} --结果是{} not not x 布尔非 - 如果 x 为 True返回 False 。如果 x 为 False它返回 True。 not(a and b) 返回 False
练习:
a 34
b 12 print((a b) and (b 10) and (a 30) and (a 50))
print((a b) and (b 10) and (a 30) and (a 50))
print(a and b and hello and 0 and 123)
print(a and b and hello and 123 and hi) print((a 50) or (b 10) or a b or (a b))
print((a 50) or (b 10) or a b or (a b))
print(0 or None or a or )
print(0 or or or None)
提高:
面试题一下代码的输出结果是什么为什么会有这样的输出。
a 34 a 10 and print(hello world)
a 10 and print(hello world) a 10 or print(你好世界)
a 10 or print(你好世界)
思考
逻辑运算的短路问题逻辑与运算和逻辑或运算取值时为什么是那种规则。 位运算符了解
按位运算符是把数字看作是二进制来进行计算的。 下表中变量 a 为 60b 为 13二进制格式如下
a 0011 1100 # 60的二进制
b 0000 1101 # 13的二进制
-----------------
ab 0000 1100
a|b 0011 1101
a^b 0011 0001
~a 1100 0011 位运算 描述 示例 按位与运算符参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a b) 输出结果 12 二进制解释 0000 1100 | 按位或运算符只要对应的二个二进位有一个为1时结果位就为1。 (a | b) 输出结果 61 二进制解释 0011 1101 ^ 按位异或运算符当两对应的二进位相异时结果为1 a ^ b) 输出结果 49 二进制解释 0011 0001 ~ 按位取反运算符对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 二进制解释 1100 0011在一个有符号二进制数的补码形式。 左移动运算符运算数的各二进位全部左移若干位由 右边的数字指定了移动的位数高位丢弃低位补0。 a 2 输出结果 240 二进制解释 1111 0000 右移动运算符把左边的运算数的各二进位全部右移若干位 右边的数字指定了移动的位数 a 2 输出结果 15 二进制解释 0000 1111 运算符优先级
当多种运算符做混合运算时就会涉及到先运算哪个后运算哪个问题。以下表格列出了从最高到最低优先级的所有运算符 运算符 描述 ** 指数 (最高优先级) ~ - 按位翻转, 一元加号和减号 (最后两个的方法名为 和 -) * / % // 乘除取模和取整除 - 加法减法 右移左移运算符 位 AND ^ | 位运算符 比较运算符 ! 等于运算符 % / // - * ** 赋值运算符 is is not 身份运算符 in not in 成员运算符 notandor 逻辑运算符
练习
print(True or False and True)
print(False or not False)
print(True or True and False) a 2
print(a ** 3 5 and a 2 3 or a * 4 8 16 and not a True and -a 0)
总结
在以后的实际开发中如果有多种运算符进行混合运算时强烈建议使用小括号来手动的控制运算符的优先级
b True or True and False # bad
c True or (True and False) # good