第三章 表达式
发布时间
阅读量:
阅读量
3.1 表达式概述
3.1.1 认识表达式
表达式就是就算的式子,有运算符和操作符组成。表达式必须返回一个值。操作数是参与运算的对象,包括字面值、变量、对象、表达式等。
使用运算符可以把多个简单的表达式连接在一起,构成一个复杂的表达式。复杂的表达式还可以嵌套组成更复杂的表达式。但是表达式最后都会返回一个值。
简单的表达式可以是一个字面值或者变量。例如:
"python" #字符串,返回字符串 python
n #变量,返回变量值
python在解析复杂的表达式时候,先计算最小单元的表达式,然后把返回值投入到外围表达式(上一层表达式)的运算,一次逐级上移。
python表达式严格遵循从做左到右的顺序执行,同时又受到每个运算的优先级和结合性的影响。为了控制计算,可以使用小括号分组,以便于提升子表达式的优先级。
3.1.2 认识运算符
运算符表示特定算法的符号,大部分由标点符号表示,少数用单词表示:is , and 、in、or、not 。运算符必须与操作数配合使用。
python运算符的优先级和结合性
| 运算符 | 描述 | 结合性 | |
|---|---|---|---|
| (espressions......)、[expressions......]、 {key:value......}、{experssions......} | 绑定或元组显示、列表显示、字典显示、集合显示。注意,绑定即分组的意思。把多个运算符绑在一起,通过分组实现优先运算 | 无 | |
| x[index]、x[index:index]、 x(arguments......)、x.attribute | 下标、切片、函数调用、属性引用,x表示对象 | 左 | |
| await x | await表达式 | 左 | |
| ** | 指数乘方。 | 右 | |
| ~,+,- | 按位取反、一元加,一元减 | 右 | |
| *、@、/、//、% | 乘、矩阵乘法、除、取模和整除。注意:%操作符也用于字符串的格式化 | 左 | |
| +、- | 加减 | 左 | |
| >>、<< | 右移位、左移位 | 左 | |
| & | 位与 | 右 | |
| ^ | 位异或 | 左 | |
| 位或 | 左 | ||
| in、not、is、not、<、<=、>、>=、!=、== | 比较,包括成员资格测试和身份测试 | 左 | |
| not | 布尔NOT | 右 | |
| and | 布尔AND | 左 | |
| or | 布尔OR | 左 | |
| if-else | 条件表达式 | 右 | |
| lamdba | lamba表达式创造匿名函数 | 左 | |
| := | 赋值 | 右 |
优先级就是当多个运算符同时出现在一个表达式中时,先执行那个运算符。
3.1.3 条件表达式
条件语句无法参与表达式的运算,如果在表达式中应用条件检测,可以选择条件表达式。条件表达式是Python唯一的三元运算符,语法格式如下:
<True 表达式>if<条件表达式>else<False 表达式>
还可以使用列表结构模拟条件表达式:
[False 表达式,True 表达式][条件表达式]
来看个例子:
n=int(input("请输入一个数字:")) #接收一个数字
x= n if n>=0 else -n
print(x)
n=int(input("请输入一个数字"))
x=[-n,n][n>=0]
print(x)
3.2 算术运算
见下例:
print(2+3)
print(2-3)
print(2*3)
print(3/2)
print(2**3)
print(3%2)
print(3/2)
print(5//2)
3.3 赋值运算
例1:计算100以内偶数和。
SUM=0
for i in range (101):
SUM+=i if i%2==0 else 0 #这里可以这样写:SUM+=[0,i][i%2==0]
print(SUM)
例2:字符串数字字母记数
Content=input("请输入一个字符串:")
num=0
str=0
for n in Content :
if n.isdecimal()==True:
num+=1
elif n.isalpha()==True:
str+=1
else :
pass
print("数字的个数",num)
print("字母的个数",str)

3.4 关系运算
例题:要求用户输入三个字符串,并比较3个字符串的大小。
str1=input("input string:")
str2=input("input string:")
str3=input("input string:")
print("before stored:",str1,str2,str3)
if str1>str2:
str1,str2=str2,str1
if str1>str3:
str1,str3=str3,str1
if str2>str3:
str2,str3=str3,str2
print("after sorted :",str1,str2,str3)

3.5 逻辑运算
例1:设计用户管理模块,对用户身份进行判断。
代码一:
grade=int(input("请输入你的级别:"))
if grade==1:
print("游客")
elif grade==2:
print("普通会员")
elif grade==3:
print("高级会员")
elif grade==4:
print("管理员")
else :
print("无效输入")
代码二:
grade=int(input("请输入你的级别:"))
str=(
grade==1 and ["游客"] or
grade==2 and ["普通会员"] or
grade==3 and ["高级会员"] or
grade==4 and ["管理员"] or
["无效输入"]
)[0]
print(str)
例2:某校特长生,设定以下3个招生标准:第一类:钢琴九级且计算机四级以上,第二类:文化课优秀,钢琴五级和计算机2级及以上,第三类:文化课及格,钢琴七级或者计算机三级。
id=int(input("请输入考号:"))
whk=float(input("请输入文化课成绩"))
gq=int(input("钢琴等级:"))
jsj=int(input("计算机等级:"))
if id>2301064114 or id<2301064114:
if(whk>=60 and gq>=7 and jsj>=3) or (whk>=90 and gq>=5 and jsj>=2) or (gq>=9 and jsj>=4):
print("你被清华大学录取了!")
else:
print("很遗憾,您未被我校录取。")
else:
print("考号输入有误,请重新输入。")

3.6 位运算与其它运算
3.6.1 位运算
位运算符包括了逻辑运算符与移位运算符。
&、|、^、~、<<、>>
这个可以到哔哩哔哩上找一个视频,我记忆中有一个视频很清楚讲的。
3.6.2 成员运算
in 运算是在指定对象中查找元素值。
例:下面示例检测用户输入的数字是否存在指定列表中。不存在,则附加到列表中;已经存在,则可以持续输入或者推出。
list=[1,2,3,4,5,6,7,8,9]
while True :
num=int(input("请输入一个数字:"))
if num in list:
print("输入的数字已存在。")
else:
list.append(num)
print("输入的数字已经被添加到列表中。")
print("是否继续输入?(Yes/No)")
ok=input()
if ok=="Yes":
continue
elif ok=="No":
print(list)
break
else:
print("输入错误。")
break
3.6.3 身份运算
a is b <=>id(a)==id(b)
全部评论 (0)
还没有任何评论哟~
