运算符和分支结构

一.运算符和分支结构

1.数学运算符

1.1+(加),-(减),*(乘),/(除),%(取余/求模),//(整除),**(幂运算)

1.1.1+,-,*,/与数学中的+,-,×,÷,相同

1
2
3
4
print(5+2)  #7
print(6-6) #0
print(26*2) #52
print(2/2) #1.0

1.1.2% 求余数,取模:x%y求x除以y的余数

1
2
print(5%2)  #1
print(8%2) #0
应用1:判断一个数能否被另一个数整除(判断余数是否为0)
1
2
3
4
5
6
7
x = 5
y = 3
a = x%y
if a == 0:
print("x可以被y整除")
else:
print("x不可以被y整除")
应用2:取低位数/取个位(对10或者10的幂次方取余)
1
2
num = 2335
print(num%10) #取个位5

1.1.3// - 整除 x/y的商只取整数

1
2
3
print(5//2)  #2
print(1.8//2) #0.0
print(-5//2) #-3
应用:正整数去低位/去个位
1
2
num = 23456
print(num // 10) #2345
练习:获取指定正整数的十位数
1
2
3
num = 3945
print(num // 10 % 10) #去个位在取个位 4
print(num % 100 // 10) #取个位和十位在去个位 4
练习2:获取指定正整数的百位数
1
2
3
num = 3945
print(num // 100 % 10) #去个位和十位在取个位 9
print(num % 1000 // 100) #取个位和十位和百位在去个位和十位 9

1.1.4** - 幂运算 x**y 求x的y次方

1
2
3
4
print(2**3)  #8
print(16**0.5) #4.0
print(2.2**2) #4.840000000000001
print(2.0**2) #4.0

2.比较运算符:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于),!=(不等于)

2.1重要结论:所有的比较运算的运算结果都是布尔

1
2
3
4
5
6
7
8
9
10
print(10 > 10)  #False
print(10 >= 10) #True
print(10 < 10) #False
print(10 <= 10) #True
print(10 == 10) #True
print(10 != 10) #False
a = (10==10)
print(a == (10==10))
if a==1:
print("003") #true=1/false=0

2.2注意:python中的比较运算符可以像数据一样通过连写来表示范围

1
2
age = 20
print(18 <= age <= 28) #true

3.逻辑运算符 - and(逻辑与运算),or(逻辑或运算),not(逻辑非运算)

3.1 and - 逻辑与运算 ,并且,连接需要同时满足的多个条件

运算规则:条件1 and 条件2 全真为真,有假为假

1
2
3
4
print(True and True)
print(True and False)
print(False and True)
print(False and False)
练习:写出一个数能同时被3和7整除的条件
1
2
3
4
5
6
aa = 63
if aa % 3 == 0 and aa % 7 == 0: #aa % 21 == 0
print("这个数能被3和7整除")
else:
print("这个数不能被3和7整除")
print(aa % 3 == 0 and aa % 7 == 0,aa%21==0)

3.2 or - 逻辑或运算 ,或者,连接需要满足的其中一个条件

运算规则:条件1 or 条件2 全假为假,有真为真

1
2
3
4
print(True or True)
print(True or False)
print(False or True)
print(False or False)
练习1:判断是否能拿奖学金,条件(绩点高于4,或者操评分不低于95)
1
2
3
4
5
6
gpa = 3.8
score = 98
if gpa > 4 or score >=95: #满足其中一个条件即可
print("可以获得奖学金")
else:
print("不能拿奖学金")
练习2:判断指定年是否为闰年(普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。世纪闰年:必须是400的倍数才是世纪闰年)
1
2
3
4
5
6
7
year = 2020
if year % 4 ==0 and year % 100 !=0:
print("该年为普通闰年")
elif year % 400 ==0:
print("该年为世纪闰年")
else:
print("该年为平年")

3.3 not - 逻辑非运算 对指定条件进行否定(取反)

运算规则: not 条件

1
2
3
print(not True)   #False
num = 18
print(not num == 18,num !=18) #False False
练习:写出一个不能同时被3和7整除的条件(能被3整除不能被7整除,能被7整除不能被3整除,既不能被3整除也不能被7整除)
1
2
num = 22
print(not num % 21 == 0)
一般用于正向条件情况很复杂,反向条件很简单的时候

3.4 短路操作:

规则:条件1 and 条件2 如果条件1为False,结果为条件1,条件2不执行

条件2 or 条件2 如果条件1为True,结果为条件1,条件2不执行

1
2
3
4
False and print("aaa")
True or print("bbb")
1 and print("aaa")
0 or print("bbb")

3.5 逻辑运算符的扩展 - 运算对象不是布尔值

1
2
3
4
print(1 and "49")   #and情况下如果数据1的布尔值是True,结果就是数据2,否则为数据1 #49
print(1 and 49) #49
print(0 and 49) #0
print(6 or 7) #or情况下如果数据1的布尔值是True,结果就是数据1,否则为数据2 #6

着重点:数据的布尔值 - 数据转成布尔的结果 python中所有类型数据都有布尔值

所有的零值和控制对应的布尔值都是False,其它数据的布尔值都是True

常见的零值和空值:0,0.0,’’,[],(),{},none

1
print(bool(2)==True,bool(0)==True,True==bool(2),True==bool([]))

4.赋值运算符:=,+=,-=,*=,/=,%=,//=,**=

重要结论:所有赋值运算符都是为了给变量赋值 左边必须为变量

4.1 = - 定义变量,给变量重新赋值

规则:把右边的值赋值给左边的变量

1
2
a = 1
print(a) #1

4.2 +=,-=,*=,/=,%=,//=,**=

规则:把左边的变量的值加上,减去,乘上,除去,取模,整除,平方右边的值之后的值在重新赋值给变量

1
2
3
4
5
6
7
8
9
10
11
b = 1
b += 8
print(b) #9
b -= 3
print(b) #6
b **= 2
print(b) #36
b //= 4
print(b) #9
b %= 2
print(b) #1

4.3运算符的优先级

数学运算符>比较运算符>逻辑运算符>赋值运算符

数学运算符:** > *,/,%,// > +,- 有括号先算括号

5.流程控制

5.1顺序结构 - 从上往下依次执行,每条语句执行一次

1
2
print(1)
print(2)

5.2分支结构 - 代码的执行看条件是否成立 (if语句)

5.2.1单分支结构 - 如果条件成立就执行某个操作,否则就不执行

语法:

if 条件语句: #if - 关键字,固定 条件语句 - 任何有结果的表达式
代码段
#判断条件是否为True,为True执行代码段,否则不执行
#如果条件语句不是布尔,就转换为布尔来看

1
2
3
4
a = 1
if a == 1:
print(True)
print("aaa")
练习1:如果指定的数是偶数就打印偶数
1
2
3
4
5
b = 22
if b % 2 ==0:
print("偶数")
if not b % 2:
print("偶数")
练习2:如果指定的数是奇数就打印奇数
1
2
3
4
5
b = 23
if b % 2 !=0:
print("奇数")
if b % 2:
print("奇数")
练习3:判断指定(100,1000)数据是否为水仙花数
水仙花数:个位的3次方+十位的三次方+百位的三次方=它本身
1
2
3
a = 153
if (a % 10) ** 3 + (a // 10 % 10) ** 3 + (a // 100) ** 3 == a:
print("是水仙花数")

5.2.2双分支结构 - 如果条件成立就执行某个操作,否则就执行另一个操作

1
2
3
4
5
a = 1
if a == 1:
print(True)
else:
print(False)

5.2.3多分支结构 - 如果条件成立就执行某个操作,否则判断另一个条件是否成立

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
age = 50
if age<14:
print(age)
print("儿童")
elif age<18:
print(age)
print("青少年")
elif age<26:
print(age)
print("青年")
elif age<50:
print(age)
print("中年")
else:
print(age)
print("老年")
练习1:判断分数等级
1
2
3
4
5
6
7
8
9
score = 89
if score > 90:
print("A")
elif score >= 80:
print("B")
elif score >= 60:
print("C")
else:
print("D")

二.作业

选择题

  1. print(100 - 25 * 3 % 4) 应该输出什么? (B)

    A. 1

    B. 97

    C. 25

    D. 0

  2. 下列哪种说法是错误的(A)。

    A. 除字典类型外,所有标准对象均可以⽤于布尔测试

    B. 空字符串的布尔值是False

    C. 空列表对象的布尔值是False

    D. 值为0的任何数字对象的布尔值是False

  3. 下列表达式的值为True的是(B)。

    A. 3>2>2

    B. 1 and 2 != 1

    C. not(11 and 0 != 2)

    D. 10 < 20 and 10 < 5

  4. Python不⽀持的数据类型有(A)。

    A. char

    B. int

    C. float

    D. list

  5. (多选)n = 6784,以下能够获取到7 的⽅法有(C,D)。

    A. n / 1000 % 100

    B. n % 1000 / 100

    C. n // 100 % 10

    D. n // 10 % 100 // 10

  6. 运⾏以下程序,当从键盘上输⼊12,运⾏结果是(A)。

    1
    2
    x = (input())
    print(type(x))

    A. <class 'str'>

    B. <class 'int'>

    C. 出错

    D. <class 'dict'>

  7. 下列表达式的运算结果是( D) 。

    1
    2
    3
    a = 100
    b = False
    print(a * b > -1)

    A. False

    B. 1

    C. 0

    D. True

填空题

  1. 查看变量中数据的类型的函数名是(type)。
  2. 已知 x = 3 == 3 ,执⾏结束后,变量x的值为(True)。
  3. 已知 x = 3 ,那么执⾏语句 x += 6 之后,x的值为(9)。
  4. 表达式 3 ** 2 的值为(9),表达式 3 * 2 的值为(6),表达式 4 ** 0.5 的值为(2.0)。

编程题

  1. 写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。

    1
    2
    3
    4
    5
    num = 20
    if num % 10 == 0:
    print(num,"能同时被2和5整除")
    else:
    print(num,"不能同时被2和5整除")
  2. 写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应

    的结果。

    1
    2
    3
    4
    5
    num = 20
    if num % 10 !=0 and (num % 2==0 or num % 5==0):
    print(num,"能够被2或者5整除,但是不能同时被2或者5整除")
    else:
    print(num,"不满足能够被2或者5整除,但是不能同时被2或者5整除")
  3. 假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX

    时XX分XX秒’的⽅式表示出来。

    例如:100秒表示成 0时1分40秒

    1
    2
    3
    4
    5
    time = 15678
    hour = time // 3600
    min = (time-hour*3600)//60
    sec = time-hour*3600-min*60
    print("今天上课时间为:",hour,"小时",min,"分钟",sec,"秒")
  4. 定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!

    公式: 体重(kg) / (身⾼(m)的平⽅值 ) 在18.5 ~ 24.9之间属于正常。

    输出格式: 是否正常:True/False

    1
    2
    3
    4
    5
    6
    kg = 70
    m = 1.75
    if 18.5<= (kg / m**2) <=24.9:
    print(True)
    else:
    print(False)
  5. 根据输入的成绩的范围打印及格 或者不及格

    1
    2
    3
    4
    5
    6
    7
    score = 88
    if score>=60:
    print(score)
    print("及格")
    else:
    print(score)
    print("不及格")
  6. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

    1
    2
    3
    4
    5
    6
    7
    age = 18
    if 0 <= age < 18:
    print("未成年")
    elif 18 <= age <=150:
    print("成年")
    else:
    print("这不是人!")
  7. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

    1
    2
    3
    4
    5
    6
    a = 22
    b = 9
    if (a-b) % 2 !=0:
    print(a-b)
    else:
    print("a-b的结果不是奇数")