dede网站安全设置合肥网络推广软件系统
web/
2025/10/8 2:45:16/
文章来源:
dede网站安全设置,合肥网络推广软件系统,鞍山做网站优化,网站设计制作的服务怎么样目录 Python基础#xff08;二#xff09;--数据类型#xff0c;运算符与流程控制
1 数据类型
1.1 Python中的数据类型
1.2 整数类型#xff08;int#xff09;
1.3 布尔类型
1.4 浮点类型
1.5 复数类型
1.6 类型转换
2 运算符
2.1 算术运算符
2.2 布尔运算符
…
目录 Python基础二--数据类型运算符与流程控制
1 数据类型
1.1 Python中的数据类型
1.2 整数类型int
1.3 布尔类型
1.4 浮点类型
1.5 复数类型
1.6 类型转换
2 运算符
2.1 算术运算符
2.2 布尔运算符
2.3 比较运算符
2.4 位运算符
2.5 赋值运算符
2.6 运算符优先级
3 流程控制
3.1 选择结构
3.2 循环结构 Python基础二--数据类型运算符与流程控制
1 数据类型
1.1 Python中的数据类型
在Python中数据可以分为如下类型
数值类型 整数类型int 浮点类型float 复数类型complex 布尔类型bool 序列类型 列表list 元组tuple 字符串str 字节bytes 映射类型dict 集合类型set 其他内置类型
注意①变量本身严格来说是没有类型的其所关联的对象类型这与其他语言的差别较大CJava等。因此我们常习惯的成Python的类型为“鸭子类型”这是一种动态类型的体现②由于变量必须要关联一个具体的对象才能确定变量的值所以在定义变量时不能只给出变量的名字必须同时要给出变量多关联的对象③Python2中还支持长整数类型long在Python3中取消。
1.2 整数类型int
我们数学上使用的整数例如3-50等这些都是整数类型。整数类型支持四种进制表示①二进制使用0b或0B前缀②八进制使用0o或0O前缀③十进制无前缀④十六进制使用0x或0X前缀10 ~ 15使用a ~ f或A ~ F表示
# 二进制
x 0b10111
print(x)
# 八进制
x 0o666
print(x)
# 十进制
x 6
print(x)
# 十六进制
x 0x1f66
print(x)
结果为以十进制的形式显示
进制转换①bin其他进制转换为二进制②oct其他进制转换为八进制③int其他进制转换为十进制④hex其他进制转换为十六进制
x 666
print(bin(x))
print(oct(x))
print(int(x))
print(hex(x))
结果为
注意返回的不是数值是字符串
分割符_当数值较大时尤其是二进制对程序的可读性会造成影响此时我们可以在数值之间使用一个_进行分隔从而提高程序的可读性Python3.6。
number 1234_5665_4321
1.3 布尔类型
布尔类型bool表示的是一种条件的判断具有两个值True与False。其中True表示条件成立即为“真”而False表示条件不成立即为“假”。
布尔类型是整数类型的子类型。实际上True就是1False就是0。因而我们也可以使用布尔类型参与数学上的运算与使用1与0参与运算的结果是一样的。
1.4 浮点类型
浮点类型float就是数学上的小数类型。例如6.0-6.6等都是浮点类型。在进制表示上浮点类型仅支持十进制表示这点不同于整数类型。除了常规的表示方式外浮点类型也可以使用数学上科学计数法的形式表示例如6.6e30
注意①十进制的整数类型不能使用0开头但是浮点类型可以以0开头。②浮点类型具有两个特殊值NaNNot A Number与Infinity无穷大其中无穷大又可分为正无穷Infinity与负无穷-Infinity。我们可以通过float函数来获得这些值。NaN有一个特征就是自己不等于自己因此我们不能通过来判断一个数值是不是NaN。
import sys
# 浮点类型的范围与实现有关通常使用程序中的double类型来实现
f 6.6e666
print(f)
print(sys.float_info)
print(sys.float_info.max)
print(sys.float_info.min)
结果为
# float类型的特殊值
print(float(NaN))
print(float(Infinity))
n float(NaN)
# NaN是特殊的值不等于任何值包括自身
print(n n)
# 因为NaN不等于任何值所以不能用进行判断而是使用math提供的函数isnan进行判断如果参数是nan则返回true否则返回False
import math
print(math.isnan(n))
结果为
浮点类型的不精确性
在使用浮点类型时我们需要留意浮点类型在计算机中仅是近似的存储浮点类型是不精确的。因此我们要避免进行如下的操作①避免数量级相差很大的浮点值之间进行运算②避免进行等量的比较。
# 避免数量级相差很大的两个浮点数进行计算
f1 6e20
f2 6
print(f1 f2)
# 避免进行等量的判断
f1 0.1
f2 0.2
print(f1 f2)
print(f1 f2 0.3) 考虑到浮点类型的不精确性因此如果我们需要进行精确计算时我们可以使用decimal模块中的Decimal类来实现该类提供精确的浮点计算。此外我们也可以指定Decimal的计算精度即计算结果最多保留的有效数字位数默认为28位有效数字。
但是Decimal要慎用因为非常消耗性能
# Decimal类型进行精确的浮点计算
import decimal
x decimal.Decimal(0.1)
y decimal.Decimal(0.2)
print(x)
print(y)
# Decimal计算默认有28位有效数字
# 获取decimal计算上下文环境后即可设置有效位数
context decimal.getcontext()
context.prec 10
x decimal.Decimal(0.1)
y decimal.Decimal(0.2)
print(x y) 1.5 复数类型
复数类型complex类似于数学上的复数。含有虚部使用j或J后缀的数值为复数类型。例如3 5j-2 - 3j数学中虚部后缀为i。复数分为实部与虚部两个部分我们可以通过real与imag属性分别获取复数的实部与虚部的值。
x 6 8j
print(x.real)
print(x.imag) 1.6 类型转换
1获取数据类型
我们可以通过type函数获取变量的类型准确的讲应该是变量所关联的对象的类型。
a 6
b 6.6
c 6 8j
# intfloatcomplex可以进行混合运算结果类型为参与运算的数据类型中较高的一个intfloatcomplex
print(type(a b))
print(type(a c))
print(type(b c)) 2类型转换函数
Python中为我们提供了如下的转换函数
①int(value)将数值类型或字符串转换为整数int类型。如果没有参数返回0
②float(value)将数值类型或字符串转换为浮点float类型。如果没有参数返回0
③complex(real,imag)根据实部与虚部可选创建一个复数。如果没有参数返回0j
④bool(value)参数为真值时返回True否则返回False
a 6
b 6.6
c True
d 6 8j
# float类型转换为int类型时去掉小数点后面的内容取整数部分int,float转换成complex时虚部为0
print(int(b))
print(complex(a))
print(complex(b))
# 注意复数类型就不能够通过int或float转换为整数或浮点类型。
# print(int(d)) 这是不合法的# 在Python中任何类型都能转换成bool类型。True就是1False就是0
print(bool(0),bool(6),bool(6.6),bool(66j))
print(int(True),int(False),float(True),float(False),complex(True),complex(False))其他①int函数还可以提供第二个参数指定解析转换时使用的进制。此时第一个参数需要是字符串类型或字节等类型不能是数值类型。例如int(“600”, 16),则会根据16进制来解析600。如果没有指定第二个参数则默认为十进制。
2 运算符
运算符即具有特殊计算规则的符号。运算符涉及到的参与运算的数据称为操作数。不同的运算符涉及的操作数也不相同。由运算符与操作数结合起来的计算式称为“表达式”。
运算符可分为算术运算符布尔运算符比较运算符位运算符赋值运算符
2.1 算术运算符
用来进行类似数学上的加减乘除运算 符号 说明 x y 加法运算返回x与y的和。 x – y 减法运算返回x与y的差。 x * y 乘法运算返回x与y的积。 x / y 除法运算返回x与y的商浮点类型。 x // y 除法运算返回x与y的商向下取整。 x % y 取模运算返回x模y的结果。 x ** y 乘方运算返回x的y次方。 x 正号x的值不会改变该符号可以省略。 -x 负号取x的相反数。
在除法运算时除数不能为0否则会产生错误ZeroDivisionError。
取模运算“Module Operation”和取余运算“Complementation ”两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。
取余与取模的差别取余向0取整余数符号与被除数相同取模向下取整余数符号与除数相同。
被除数 - 除数 * 商 余数被除数 除数 * 商 余数
# 正数的取余运算与取模运算结果一样
print(7 % 4)
# 负数的取模运算
# 被除数为-7除数为4商为-1.75向下取整为-2取模向0取整为-1取余
# 根据公式被除数 - 除数 * 商 余数 得 -7 - 4*-21
print(-7 % 4) 2.2 布尔运算符
布尔运算符也称逻辑运算符 符号 说明 x and y 如果x为True返回y否则返回x。 x or y 如果x为True返回x否则返回y。 not x 如果x为True返回False否则返回True。
x与y可以是任意类型因为在Python中任意类型都可以转换为布尔类型。
# and连接两个表达书表示并且。两个表达式都为True整个表达式才为True
print(6 8 and 6 6)
# or连接两个表达式表示或。两个表达式中有一个为True整个表达式为True
print(6 8 or 6 6)
# not表示对条件的否定。True-》False。False-》True
print(not True) 注意and与的表达式未必一定是bool类型可以是任意类型因为任何类型都可以转换成bool类型
# and如果如果第一个表达式为False第二个表达式不是True或False则返回第一个表达式如果第一个表达式为True则返回第二个表达式
# or与and相反如果第一个表达式为True返回第一个表达式否则返回第二个表达式
print(6 and a)
print(6 or a)
#and与or的短路操作当and的第一个表达式为False或者or的第一个表达式为True此时就可以确定整个表达式的值第二个表达式会直接跳过不会执行
print(0 and print(不执行)) 2.3 比较运算符
比较运算符执行的是比较运算如果表达式成立返回True否则返回False。 符号 说明 x y 如果x大于y返回True否则返回False。 x y 如果x大于等于y返回True否则返回False。 x y 如果x小于y返回True否则返回False。 x y 如果x小于等于y返回True否则返回False。 x y 如果x等于y返回True否则返回False。 x ! y 如果x不等于y返回True否则返回False。 x is y 如果x与y是同一个对象返回True否则返回False。 x is not y 如果x与y是不同的对象返回True否则返回False。
在Python语言中比较运算符支持链式比较在java语言中是不支持的。x y z相当于x y and y z不同之处仅在于后者中y只会计算一次。链式比较与拆分成and或or连接的表达式一样也会进行短路操作。
is与is not与!的区别在于与!比较的是对象内部的值是否相等而is与is not比较的是两个对象是否为同一个对象。 2.4 位运算符
位运算符提供的是对位bit进行的操作。位运算符的操作数要求是整数类型布尔类型。位运算符如下表所示 符号 说明 x y x与y按位与运算如果两个位都是1结果为1否则结果为0有0则结果为0。 x | y x与y按位或运算如果两个位都是0结果为0否则结果为1有1则结果为1。 x ^ y x与y按位异或运算如果两个位相同则结果为0如果两个位不同则结果为1有1则为1但又不同时为1。 x y 将x向左移动y位右侧以0进行填充。y不能为负值否则会产生ValueError。 x y 将x向右移动y位左侧以符号位进行填充。y不能为负值否则会产生ValueError。 ~x 对x进行按位取反即1变为00变为1。
注意布尔类型作为整数类型的子类型也可以参与位运算但是最好不要这样因为布尔类型的作用是进行逻辑上的判断而不是当成数值1与0参与数学运算。 2.5 赋值运算符
赋值运算符包括简单赋值运算符与复合赋值运算符。 符号 说明 x y 简单赋值运算。即x关联y所关联的对象。 x op y 复合赋值运算。op可以是任意二元算术运算符与二元位运算符。 x op y相当于x x op y。例如x y相当于x x y。 2.6 运算符优先级
同一行的运算符具有相同的优先级从高到低进行排列。如下 运算符优先级 . () [] ** 正号 -负号 ~ * / // % - ^ | in not in is is not ! not and or op - * / // % ** ^ |
当我们在使用表达式无法确定优先级时我们可以使用小括号来调整表达式的结合性小括号的优先级是最高的。 3 流程控制
流程即程序执行的过程。程序的三种结构顺序结构按部就班自顶而下的去执行的选择结构循环结构
3.1 选择结构
1if
缩进的语法缩进大小随意但是要保持一致。按照惯例使用4个空格。
if 表达式 if语句体
如果表达式为True或者可以转换为True则执行语句体否则不执行
age 20
if age 18:print(成年了)
print(没有缩进不是if的语句体) 2if-else
提供两条分支。
age 16
if age 18:print(成年了)
else:print(未成年) 3if-elif
可以实现多分支判断if-else只能实现两分支判断
if 表达式 语句体
elif 表达式 语句体
更多的elif 表达式 语句体
# 注意多分支选择条件有包含关系需要将范围小的放在前面范围大的放在后面
number int(input(输入数字))
if number 90:print(A)
elif number 80:print(B)
elif number 70:print(C)
elif number 60:print(D)
4if-elif-else
if 表达式 语句体
elif 表达式 语句体
...
else: 语句体
# 注意多分支选择条件有包含关系需要将范围小的放在前面范围大的放在后面
number int(input(输入数字))
if number 90:print(A)
elif number 80:print(B)
elif number 70:print(C)
elif number 60:print(D)
else:print(E)
5if-else的简化
类似于其他语言中的三元运算符。格式为 表达式1 if 条件表达式 else 表达式2
其中条件表达式执行条件判断如果条件表达式的值为True则返回表达式1的值否则返回表达式2的值。
number int(input(输入数字))
print(小 if 1 number 3 else (大 if 3 number6 else 输入有误))
6if嵌套
if是嵌套使用的用来多层选择分支的判断。
gender 男
age 20
if gender 男:print(男性)if age 18:print(做苦力)else:print(玩耍)
else:print(女性)if age 18:print(做饭)else:print(玩耍) 7断言
断言判断某些语句是否正确。通过断言我们可以为应用程序加入调试信息从而检测程序关键点位置的准确性。
断言使用assert关键字语法格式为 assert 表达式 或 assert 表达式错误信息
在执行断言语句时会对表达式1进行求值如果该值转换为布尔类型后为False则会产生错误信息。其中第二种形式的错误信息是可选的如果给出错误信息则会在表达式为False的时候输出我们指定的错误信息。
断言有什么用处呢我们可以自行通过if语句使用raise抛出异常来实现啊。其实断言底层其实就是通过if语句判断与异常来实现的。
断言是通过__debug__来控制的如果该变量为True则会开启断言进行判断一旦断言表达式为False就会产生异常。如果该变量为False则不会开启断言就算断言表达式为False也不会产生异常因为根本没有执行。__debug__是Python中的内置常量值该常量值默认为True如果在运行Python时命令行指定了-O选项则该常量值为False。因此我们可以方便的开启与关闭断言通过-O选项。这比使用if语句要灵活因为使用if语句程序会无条件的判断无法进行控制。
password1 input(请输入密码)
password2 input(请再次输入密码)
# 设下断言当两次密码一致才进行后续的操作
assert password1 password2
print(继续执行)
3.2 循环结构
循环就是重复性的执行一件相同或相似的事情
1while
while 表达式 循环体
如果表达式为true则重复执行语句体
x 0
y 10
sum 0
while x 10:sum xx 1
print(sum) 2for
for 变量 in 可迭代对象 循环体
对可迭代对象的每个值依次赋值给变量然后执行一次循环体
# range函数能够产生一个区间的整数值是一个可迭代对象
# range(end) 产生0-end区间的整数值包括0不包括end
# range(start,end) 产生start-end区间的整数值包括start不包括end
# range(start,end,step) 产生start-end区间的整数值包括start不包括end,step指定步长默认为1
for x in range(2,10,2):print(x,end ) 3循环嵌套
循环嵌套是指外层循环的内部还有内层循环即内层循环作为外层循环的循环体。当循环嵌套时外层循环每执行一次内层循环都会完整的执行一轮。如果外层循环会执行m次内层循环会执行n次则总共会执行m * n次。
for i in range(1,5):for j in range(1,i1):print(*,end )print() 4break与else
break只能在循环中使用。else可以跟随在for或while循环之后当循环正常执行完毕会执行else语句如果循环非正常执行完毕而是通过break跳出循环则else语句块不会得到执行。else语句是可选的。
# break用于提前完成任务结束循环
for i in range(1,10):if i 5:print(i为5)break
# for 与 while循环可以加上一个可选的else如果循环没有因为break提前结束则执行else语句体否则不执行
num 6
for i in range(1,10):if i num:print(存在num)break
else:print(不存在num) 5continue
continue只能用在循环语句中。用来结束本次循环开启下一次循环对后续的循环没有影响
注意break与continue基本只会用在选择判断中。无条件的break与continue虽然语法上没有错误但从实际的角度来说是没有意义的。
# continue用来表示当前循环已经不满足条件时可以使用continue提前结束本次循环开启对下一个值进行判读。
for i in range(1,10):if i 5:continueprint(i,end )
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88833.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!