Advertisement

第三章 表达式

阅读量:

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)

还没有任何评论哟~