一、上堂回顾
1.默写题目
1.定义一个数字类型的变量,并将其转换为字符串,最后将其删除
num = 10 s = str(num) del num
2.向控制台打印字符串111,222,333,并使用短横线【-】相连
print("111-222-333") print("111","222","333",sep="-")
3.从控制台输入一个数,判断该数是否是奇数
num = int(input()) if num % 2 == 0: print("偶数") else: print("奇数") if num % 2 == 1: print("奇数") else: print("偶数")
4.从控制台输入一个数,打印对应的星期英文【Mon,Tues,Wed,Thur,Fri,Sat,Sun】
num = int(input()) if num <= 0: print("有误") elif num == 1: print("Mon") elif num == 2: print("Tues") else: print("有误")
2.知识点回顾
1.常量和变量
Python的数据类型:Number,String,Boolean,list,tuple,dict,set
变量
定义:变量名 = 初始值
作用:存储数据,参与运算
内存中的变量:定义变量的时候,需要在内存中开辟空间,引用指向一个实体,当一个实体没有引用指向的时候,则会被系统的垃圾回收机制回收,原来开辟的空间被释放掉【销毁掉】
删除变量:del 变量名
变量的类型转换:int() float() str()
2.输入输出
print():values sep end file flush
input:结果都是字符串
3.运算符
算术运算符:/ // / % **
赋值运算符:注意复合赋值运算符的等价关系
关系运算符:注意:结果都是布尔值
4.if
注意区分if,if-else,if-elif-else
3.作业讲解
代码演示:
#5.从控制台输入两个数,输出较大的值 num1 = int(input()) num2 = int(input()) if num1 > num2: print(num1) elif num1 < num2: print(num2) else: print(num1) #思路:首先定义一个新的变量,将num1或者num2中的任何一个值赋值给新的变量 max1 = num1 if max1 > num2: print(max1) #2.从控制台输入三个数,输出较大的值 n1 = int(input()) n2 = int(input()) n3 = int(input()) max = n1 if n2 > n1: max = n2 if n3 > max: max = n3 print(max) #3.从控制台输入一个三位数,如果是水仙花数就打印“是水仙花数”,否则打印“不是水仙花数” 例如:153=1^3+5^3+3^3 num = int(input()) #153 #将各个位数上的数拆分出来 gw = num % 10 #3 sw = num % 100 // 10 #5 bw = num // 100 #1 total = gw ** 3 + sw ** 3 + bw ** 3 #pow(gw,3) if num == total: print("水仙花") else: print("不是")
二、运算符与表达式【第二部分】
1.逻辑运算符
作用:进行设置条件,运算的结果为布尔值
使用:一般结合关系运算符使用
逻辑与:and
表达式1 and 表达式2 :只有当表达式1和表达式2同时成立的时候,则结果为True
逻辑或:or
表达式1 or 表达式2 :当表达式1和表达式2中至少一个成立的时候,则结果为True
逻辑非:not
not 表达式:真---》假 假---》真
1.1逻辑与
代码演示:
""" 真 and 真 = 真 真 and 假 = 假 假 and 真 = 假 假 and 假 = 假 """ num1 = 10 num2 = 20 #逻辑运算符结合算术运算符 if num1 - 10 and num2: print("成立") else: print("不成立") #逻辑运算符结合变量 if num1 and num2: print("成立") else: print("不成立") #思考问题:逻辑运算符结合赋值运算符使用?-----》不能 #注意:赋值运算符肯定不会出现在条件中 """ #错误演示 if num1 += 1 and num2 -= 1: print("成立") """ #逻辑运算符结合条件运算符 if num1 > num2 and num1 == num2: print("成立") else: print("不成立")
1.2逻辑或
代码演示:
""" 真 or 真 = 真 真 or 假 = 真 假 or 真 = 真 假 or 假 = 假 """ num3 = 0 num4 = 1 if num3 or num4: print("成立") else: print("不成立") if num3 > num4 or num3 == num4: print("成立") else: print("不成立")
1.3逻辑非
代码演示:
""" not 真 = 假 not 假 = 真 """ num = 0 if not num: print("成立") else: print("不成立")
1.4短路原则【掌握】
面试题
出现的时机:在一个表达式中,逻辑运算符不止一个的时候,则会出现短路原则
规律:
a.表达式从左到右进行运算,如果第一个逻辑运算符为or,表达式1的值为真,则整个表达式的结果为真
举例:表达式1 or 表达式2 or 表达式3
b.表达式从左到右进行运算,如果第一个逻辑运算符为and,表达式1的值为假,则整个表达式的结果为假
举例:表达式1 and 表达式2 and 表达式3
c.如果or的左边的逻辑值为假 and的左边的逻辑值为真,则不再遵循短路原则,按照步骤分步计算
代码演示:
#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函数被执行,打印的结果为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 #True and False and False and True ----->A B #False and False and True ------>C """ 1.整个表达式的值:False 2.按照步骤分别操作,最终打印ABC """ if a() and b() and c() and d() and e(): print("ok") #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 #True or False or True or False or True """ 1.整个表达式的值:True 2.打印A """ if a() or b() or c() or d() or e(): print("ok") 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 #False or False or True or False or True #False or True or False or True ----->AB #True or False or True ----->C """ 1.整个表达式的值:True 2.打印ABC ok """ if a() or b() or c() or d() or e(): print("ok") 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 or True and True or False and True ------>A #True and True or False and True ----->E #True or False and True ---->F """ 1.整个表达式的值:True 2.打印AEF ok555【特殊情况:or的左边是True,则直接短路】 """ if a() and b() and c() and d() or e() and f() or g() and h(): print("ok555555") #注意:在实际应用中,一般会出现一个and和一个or,最好能对不同的条件添加括号
2.成员运算符
注意:成员运算符一般在list中使用
in:如果在指定列表中找到某个值,则返回True
not in :如果在指定列表中没有找到某个值,则返回True
3.身份运算符
is:判断两个标识符是否是引用同一个实体
is not:判断两个标识符是否是引用不同的实体
注意:运算的结果为布尔值
代码演示:
a = 10 b = 10 if a is b: print("yes") else: print("no") if a is not b: print("yes") else: print("no") b = 20 if a is b: print("yes") else: print("no") if a is not b: print("yes") else: print("no") #== if a == b: print("yes~~~~~") if id(a) == id(b): print("yes%%%%%")
总结:
a.is和id()比较的是变量在内存中的地址
b.==比较的是变量的值
4.运算符的优先级
注意:在实际应用中,尽量不要写过于复杂的表达式,如果有稍微复杂运算的话,尽量通过括号区别优先级
三、循环语句之while语句
1.概念
编程语言中,在满足条件的情况下,反复执行某一段代码,这种现象被称为循环,其中,这段被反复执行的代码被称为循环体
问题:当反复执行某一段代码的时候,需要在合适的时机将循环的条件改为假,从而结束循环,否则会形成一个死循环
Python中的循环语句:while语句,for语句
举例:打印10遍helloworld
2.while语句
2.1使用
语法:
if 表达式:
语句
while 表达式:
语句
详细的写:
初始化表达式
while 条件表达式:
循环体
循环之后的操作表达式
工作原理:当程序从上往下依次执行的过程中,一旦遇到while语句,首先去判断条件表达式是否成立,如果成立,则执行循环体和循环之后的操作表达式;如果条件表达式不成立,则直接跳过整个while语句继续执行后面的语句
与if语句的区别:在条件都成立的前提下,if语句只执行一次,但是while语句至少会执行一次
代码演示:
#举例:打印10遍helloworld """ while True: print("hello world") """ #解决:考虑次数 #1.定义一个变量,用于记录循环的次数 num = 0 #2.判断num和一个指定值之间的大小,只需要保证次数为需求中的次数 while num < 10: #3.循环体 print("hello world") #4.循环之后的操作表达式,控制循环的次数 print(num) num += 1 num1 = 10 while num1 > 0: print("hello world~~~~") num1 -= 1
2.2死循环
代码演示:
#死循环 """ while True: pass while 1: pass """
2.3else分支
if 表达式:
语句
else:
语句
while 表达式:
语句
else:
语句
代码演示:
#需求:打印0~9的数字 num1 = 0 while num1 < 10: print(num1) num1 += 1 else: print("~~~~~~") num2 = 0 while num2 > 10: print(num2) num2 += 1 else: print("hello ~~~~~")
总结:
a.在if-else语句中,当条件为假的时候,else才有被执行的机会
b.在while-else语句中
当条件为真:先执行完循环,最后才执行else
当条件为假:直接执行else
2.4练习
代码演示:
#1.打印1~100之间所有的偶数 #方式一 num1 = 1 while num1 <= 100: if num1 % 2 == 0: print(num1) num1 += 1 #方式二 num2 = 2 while num2 <= 100: print(num2) num2 += 2 #2.求1~100之间能被5整除的数的和 num3 = 1 #新定义一个变量,用于记录每次获取到的符合条件的数的和 sum3 = 0 while num3 <= 100: if num3 % 5 == 0: print(num3) sum3 += num3 num3 += 1 print(sum3) #3.求1~100之间能被6整除的数的个数 num4 = 1 count4 = 0 while num4 <= 100: if num4 % 6 == 0: count4 += 1 num4 += 1 #4.求10的阶乘 num5 = 1 sum5 = 1 while num5 <= 10: print(num5) sum5 *= num5 num5 += 1 print(sum5)
2.5嵌套while语句
代码演示:
#打印九九乘法表 """ 行 列 1x1=1 1 1 1x2=2 2x2=4 2 2 1x3=3 2x3=6 3x3=9 3 3 ..... 1x9=9 2x9=18 3x9=27 ........ 8x9=72 9x9=81 9 9 规律: 行的取值范围:1~9 列的取值范围:1~行数 列随着行的变化而变化的 列的最大值和行数相等 """ #实现:嵌套循环 #外层循环:控制行 line = 1 while line <= 9: #循环体 #内层循环:控制列 colum = 1 while colum <= line: print("%dx%d=%d"%(colum,line,line*colum),end=" ") colum += 1 #换行 print("") line += 1 """ 行 列 * 1 1 ** *** **** ***** 5 5 """ #外层循环:控制行 i = 1 while i <= 5: #内层循环:控制列 j = 1 while j <= i: print("*",end="") j += 1 print("") i += 1 """ * *** ***** ******* """