day03

一、if语句

1.嵌套if语句

语法:

if 表达式1:

​ if 表达式2:

​ 执行语句

说明:只有当表达式1和表达式2都成立时,语句才会被执行

​ if语句的嵌套可以是单分支,双分支,多分支

​ 理论上嵌套的层数没有限制,但是,为了代码的可读性,嵌套的层数尽量不要超过3层

代码演示:

n = 2
m = 3
if n < 5:
    print("hello")
    if m < 10:
        print("yes")
​
​
#需求:如果有人加你好友,年龄小于18,如果是美女,则欣然同意,如果不是,则残忍拒绝
age = int(input("请输入你的年龄:"))
looks = input("请输入你的相貌:")
if age < 18:
    print("年龄符合")
    if looks == "美女":
        print("欣然同意")
    else:
        print("残忍拒绝")
​
else:
    print("残忍拒绝")

2.注意

a.Python中通过缩进划分代码块,特别是在嵌套if语句中,明确语句是哪个if语句的

b.Python中的多分支elif代替了其他语言中的else if,if-elif-else

c.每个条件的后面有一个冒号,表示代码块的开始

d.在Python中没有switch-case分支语句

二、运算符与表达式【第二部分】

1.逻辑运算符【掌握】

1.1使用

作用:进行设置条件,跟比较运算符类似,运算的结果是布尔值,

使用场景:一般结合if语句

逻辑与:and【&】

​ 表示式1 and 表达式2 :只有表达式1和表达式2都为真的时候,返回的结果才是True【一假为假,全真为真】

逻辑或:or【|】

​ 表示式1 or 表达式2 :只有表达式1和表达式2都为假的时候,返回的结果才是False【一真为真,全假为假】

逻辑非:not

​ not 表达式: 真----》假 假-----》真

代码演示:

#逻辑与
num1 = 10
num2 = 20
#1.逻辑运算符结合算术运算符和变量【常量】
if num1 - 10 and num2:
    print("yes")
else:
    print("no")
​
#2.逻辑运算符结合关系运算符
if num1 == num2  and num1 > num2:
    print("yes~~~")
else:
    print("no~~~~")
​
#3.逻辑运算符不能结合赋值运算符使用
# if num1 += 1 and num2:
#     print("yes")
#结论:逻辑运算符一般结合常量,变量,关系运算符,算术运算符使用
#逻辑或
if num1 or num2:
    print("成立")
else:
    print("不成立")
​
#逻辑非
if not num1:
    print("111")
​
if not num1 > num2:
    print("2222")
​
​
#练习:从控制台输入一个数,如果该数能被3或者7整除的话,则输出该数,否则输出xxx
num = int(input("请输入一个数:"))
if num % 3 == 0  or num % 7  == 0:
    print(num)
else:
    print("xxxx")
​
#练习:从控制台输入一个年份,判断该年是否是闰年
"""
第一种情况:能被4整除,但是不能被100整除   and
or
第二种情况:能被400整除
"""
year = int(input("请输入年份:"))
#方式一:逻辑运算符
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print("闰年")
​
#方式二:if
if year % 400 == 0:
    print("闰年")
elif year % 4 == 0:
    if year % 100 != 0:
        print("闰年")
else:
    print("平年")
​
#注意:大多数需求可以同时使用if语句或者逻辑运算符实现

1.2短路原则

【面试题】

出现的时机:在一个复杂的表达式中,逻辑运算符不止一个,很可能会出现短路原则

一般规律:

​ 表达式1 and /or 表达式2

​ a.and:表达式从左往右进行计算,如果表达式1 的值为假,则整个表达式的结果为假,表达式2没有判断的必要

​ b.or:表达式从左往右进行计算,如果表达式1 的值为真,则整个表达式的结果为真,表达式2没有判断的必要

​ c.表达式从左往右进行计算,and的左边为真,or的左边为假,则不遵循短路原则


and
真 and 真 = 真
真 and 假 = 假
假 and 真 = 假
假 and 假 = 假

or
真 or 真 = 真
真 or 假 = 真
假 or 真 = 真
假 or 假 = 假

代码演示:

#1.逻辑运算符全部是and,第一个and的左边是False
def a():
    print("A")
    return False
def b():
    print("B")
    return False
def c():
    print("C")
    return True
def d():
    print("D")
    return False
def e():
    print("E")
    return True
​
#False and False and True and False and True
"""
1.整个表达式:False
2.a()的结果为False,则出现短路,打印A
"""
if a() and b() and c() and d() and e():
    print("ok")
​
#2.逻辑运算符全部是and,第一个and的左边是True
def a():
    print("A")
    return True
def b():
    print("B")
    return True
def c():
    print("C")
    return False
def d():
    print("D")
    return False
def e():
    print("E")
    return True
​
#True and True and False and False and True
"""
1.整个表达式:False
2.打印ABC
True and True and False and False and True
True and False and False and True   ---->AB
False  and False and True   ----->C
"""
if a() and b() and c() and d() and e():
    print("ok~~~2")
​
print("~~~~~~~~~~~~~~")
​
#3.逻辑运算符全部是or,第一个or的左边是True
def a():
    print("A")
    return True
def b():
    print("B")
    return False
def c():
    print("C")
    return True
def d():
    print("D")
    return False
def e():
    print("E")
    return True
​
"""
1.整个表达式:True
2.打印A
"""
#True or False or True or False or True
if a() or b() or c() or d() or e():
    print("ok~~~3")
​
print("~~~~~~~~~~~~~~")
​
#4.逻辑运算符全部是or,第一个or的左边是False
def a():
    print("A")
    return False
def b():
    print("B")
    return False
def c():
    print("C")
    return True
def d():
    print("D")
    return False
def e():
    print("E")
    return True
​
"""
1.整个表达式:True
2.打印ABC
False or False or True or False or True
False or True or False or True  -------->AB
True or False or True ------>C
​
"""
#False or False or True or False or True
if a() or b() or c() or d() or e():
    print("ok~~~4")
​
print("~~~~~~~~~~~")
​
#5.and和or混合使用
def a():
    print("A")
    return False
def b():
    print("B")
    return False
def c():
    print("C")
    return True
def d():
    print("D")
    return False
def e():
    print("E")
    return True
def f():
    print("F")
    return True
def g():
    print("G")
    return False
def h():
    print("H")
    return True
​
#False and False and True  and False or True and True or False and True
"""
False and False and True  and False or True and True or False and True
False or True and True or False and True ------>打印A,短路BCD
True  and True or False and True  ----->打印E
True or False and True------>打印F
True and True   ---->打印H,短路G
True
"""
if a() and b()  and c() and d() or e() and f() or g()  or h():
    print("ok~~~~5")
​
#特殊情况:
"""
表达式1  or 表达式2  and 表达式3
只执行表达式1,会直接短路表达式2和表达式3
"""#注意:在实际项目开发中,如果需要出现多个and或者or的时候,就是通过括号避免短路原则的出现,混合使用,一般不超过4个

2.成员运算符

注意:成员运算符一般使用在数据结构【list,tuple,dict,set】中

in:如果在指定的数据结构中找到指定的数据,则返回True

not in:如果在指定的数据结构中找不到指定的数据,则返回True

3.身份运算符

is:判断两个变量是否引用自同一个实体

is not:判断两个变量是否引用自不同的实体

注意:运算的结果为布尔值

代码演示:

a = 10
b = 10
print(id(a))
print(id(b))
​
if a is b:
    print("成立")
else:
    print("不成立")
​
if a is not b:
    print("成立~~~1")
else:
    print("不成立~~~1")
​
if a == b:
    print("相等")
else:
    print("不相等")
​
print("*************")
​
a1 = 10
b1 = 20print(id(a1))
print(id(b1))
​
if a1 is b1:
    print("成立")
else:
    print("不成立")
​
if a1 is not b1:
    print("成立~~~1")
else:
    print("不成立~~~1")
​
if a1 == b1:
    print("相等")
else:
    print("不相等")

总结:

​ 身份运算符用来判断变量的地址【等价于id(xx) == id(xx)】

​ ==:判断的是值【基本数据类型】

三、循环语句之while循环

1.什么是循环

广义:一个现象周期性的出现

狭义:在满足条件的情况下,反复执行某段代码,在编程语言中这种语句就被称为循环语句,没被反复执行的代码被称为循环体

问题:在循环中,要在合适的时机将循环的条件改为假,让循环停止下来,否则,会出现死循环

2.while语句

2.1定义

语法:

if 表达式:

​ 执行语句

while 表达式:

​ 循环体

说明:

​ a.while语句和if语句的区别:在条件成立的前提下,if语句只会被执行一次,但是,while语句会被多次执行

​ b.表达式:常量,变量,运算符充当

​ c.工作原理:在条件满足的情况下,循环体会被反复执行,执行的次数取决于条件

代码演示:

#需求:打印10遍hello world
"""
while 1:
    print("hello world")
"""
"""
书写一个完整的循环,需要的四要素
1.初始化表达式
2.while  条件表达式
    3.循环体
    4.循环之后的操作表达式
"""
n = 0
while n < 10:
    print("hello world")
    n += 1print("over")
​
#需求:打印0~9的数字
n1 = 0
while n1 < 10:
    print(n1)
    n1 += 1#练习
#需求:求1~100之间所有整数的和
#思路:获取指定的数据,将每次获取到的数据进行累加【在循环之前定义一个新的变量,在循环中进行累加】
n2 = 1
total = 0
while n2 <= 100:
    #print(n2)
    #进行求和
    total += n2
    n2 += 1
print(total)
​
​
#需求:求1~100之间所有偶数的和
#方式一
n3 = 0
total1 = 0
while n3 <= 100:
    total1 += n3
    n3 += 2
#方式二
n4 = 1
total2 = 0
while n4 <= 100:
    if n4 % 2 == 0:
        total2 += n4
    n4 += 1
print(total2)
​
#需求:统计100~1000以内能被6整除的数的个数
n5 = 100
count1 = 0
while n5 <= 1000:
    if n5 % 6 == 0:
        count1 += 1
    n5 += 1print(count1)
​
#需求:计算10的阶乘
n6 = 1
result = 1
while n6 <= 10:
    result *= n6
    n6 += 1

2.2死循环

在循环语句中,条件永远为真的循环

使用场景:如果一段代码需要重复被执行,但是不确定重复的次数


while True:
    xxxx
while 1:
    xxxx

2.3else分支

语法:

while 条件:

​ 循环体

else:

​ 语句

说明:在if-else语句中,只有当条件为假的时候,else分支才有执行的机会

​ 在while-else语句中,不管条件为真为假,else分支都会被执行,并且是在最后执行

代码演示:

a = 10
while a < 3:
    print("hello")
    a += 1
else:
    print("else被执行了")

2.4嵌套while循环

语法:

while 表达式1:

​ while 表达式2:

​ 循环体

代码演示:

#1
n = 0
#外层循环
while n < 5:
    #循环体
    print("外层循环:",n)
​
    #内层循环
    m = 0
    while m < 3:
        print("内层循环:",m)
        m += 1
​
    n += 1#嵌套循环:内层循环被当做一个整体去执行,只有当内存循环执行完毕之后,外层循环的操作表达式才有执行的机会
#2
a = 0
b = 0
while a < 5:
    print("111~~~",a)
    while b < 3:
        print("2222~~~",b)
        b += 1
    a += 1

#需求:打印九九乘法表
"""
                                                        行           列
1x1=1                                                   1               1
1x2=2 2x2=4                                             2               2
1x3=3 2x3=6 3x3=9                                       3                  3
.....
​
1x9=9  2x9=18   ........    7x9=63  8x9=72 9x9=81       9                   9
​
​
分析:
1.使用嵌套循环实现:外层循环控制行,内层循环控制列
2.行数:1~9
3.列数:列数随着行数的变化而变化,列数的最大值和行数相等 【1~行数】
"""#外层循环:控制行
line = 1
while line <= 9:
    #内层循环:控制每一行的列
    colum = 1
    while colum <= line:
        #循环体:打印九九乘法表的中的表达式
        print("%dx%d=%d" % (colum,line,line * colum),end=" ")
        colum += 1print("")
    line += 1#练习:打印如下图形
"""
*
**
***
****
*****
"""
#方式一
i = 1
while i <= 5:
    print("*" * i)
    i += 1#方式二
a = 1
while a <= 5:
    b = 1
    while b <= a:
        print("*",end="")
        b += 1
    print("")
    a += 1

3.break语句

break:打断

作用:跳出循环【直接结束整个循环语句,继续执行循环后面的代码】

应用场景:死循环,如果在代码执行的过程中已经获取到了需要的结果,则整个循环没有进行下去的必要,则可以使用break手动结束循环

用法:break ,单独就是一条语句

代码演示:

#1
n1 = 0
while n1 < 5:
    print(n1)
​
    #注意:break一般单独使用,用来结束循环
    #注意:if语句在此只是充当了一个条件判断的角色,和break没有关系
    if n1 == 3:
        break
        #注意:在while语句中,出现在break后面的代码没有执行的机会
        #print("hello")
​
    n1 += 1print("over")
​
#2.特殊情况:如果while语句中使用了break,则else分支不会被执行
n2 = 0
while n2 < 5:
    print(n2)
    if n2 == 3:
        break
    n2 += 1
else:
    print("else被执行了")
​
#3.将break应用到嵌套while循环中,break应该跳出谁
m1 = 1
while m1 <= 3:
    m2 = 1
    while m2 < 4:
        print("%d = %d" % (m1,m2))
        if m2 == 2:
            #break应用在嵌套循环中,跳出的是最近的循环【当前的循环】,就近原则
            #如果要跳出指定的循环,则将break书写到指定的循环中
            break
        m2 += 1
    m1 += 1
"""
1 = 1
1 = 2
1 = 3
2 = 1
2 = 2
2 = 3
3 = 1
3 = 2
3 = 3
"""#4.死循环
num = int(input("请输入一个数:"))
while True:
    if num == 1:
        print("111")
    elif num == 2:
        print("2222")
    else:
        print(num)
        breakprint("结束了")
原文地址:https://www.cnblogs.com/allwell/p/9938418.html