python入门(2)
一、判断语句
直白一点就是条件判断语句,符合条件的才会执行,Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false
(一)if判断语句基础版本
语法格式
if 要判断的条件:条件成立时,执行这行内容......
注意:代码的缩进为一个 tab 键,或者4个空格–建议使用空格。在Python 开发中,Tab 和空格不要混用!
1.1 条件判断练习题
需求
1定义一个整数变量记录年龄
2.判断是否满18 岁(>=)
3.如果满18岁,允许进网吧嗨皮
age = 21
if age >= 18:
# if语句和它下面的缩进语句是一个整体,条件成立才会执行缩进部分,不成立直接跳过整个代码块print("成年了允许进入网吧")
# 无论条件语句是否成立,这句都会执行
print("这句话什么时候执行")
1.2 不满足条件的判断语句
上面说条件才会执行缩进语句,不满足语句的话可以使用else,if 和else 语句以及各自的缩进部分共同是一个 完整的代码块
语法格式:
if 要判断的条件:条件成立时,执行这行内容
else:条件不成立时,执行这行内容
1.3 条件判断练习题
需求
1定义一个整数变量记录年龄
2.判断是否满18 岁(>=)
3.如果满18岁,允许进网吧嗨皮
4.不满足回家写作业
age = 15
if age >= 18:print("成年了允许进入网吧")
else:print("不想挨打就回家写作业")
(二)if判断语句进阶版
语法格式:
if 要判断的条件1:条件1成立时,执行这行内容
elif 条件2:条件2成立时,执行这行内容
elif 条件3:条件3成立时,执行这行内容
else:以上条件都不成立时,执行这行内容
2.1 elif判断语句练习题
holiday_name ="平安夜"
if holiday_name =="情人节":print("买玫瑰")print("看电影")
elif holiday_name =="平安夜":print("买苹果")print("吃大餐")
elif holiday_name =="生日":print("买蛋糕")
else:print("每天都是节日啊.....")
(三)if判断语句高级版
if语句嵌套
elif的应用场景是:同时判断多个条件,所有的条件是平级的
在开发中,使用if进行条件判断,如果希望 在条件成立的执行语句中再增加条件判断,就可以使用if 的嵌套
if 的嵌 的应用场景就是:在之前条件满足的前提下,再增加额外的判断if 的嵌套的语法格式,除了缩进之外和之前的没有区别
语法格式如下:
if 条件 1:条件 1 满足执行的代码if 条件 1 基础上的条件 2:条件 2满足时,执行的代码#条件 2不满足的处理else:条件 2 不满足时,执行的代码
# 条件 1不满足的处理else:条件1 不满足时,执行的代码
3.1 嵌套语句练习题
需求
- 1定义布尔型变量表示是否有车票has_ticket
- 2.定义整型变量 knife_length 表示刀的长度,单位:厘米
- 3.首先检查是否有车票,如果有,才允许进行 安检
- 4.安检时,需要检查刀的长度,判断是否超过 20 厘米
- 5如果超过 20 厘米,提示刀的长度,不允许上车如果不超过20厘米,安检通过
- 6.如果没有车票,不允许进门
has_ticket = True
knife_length = 20
if has_ticket:print("有车票可以进行安检")if knife_length < 20:print("刀的长度小于20cm,可以上车")else:print("刀的长度大于等于20cm,不可以上车")
else:print("没有车票不可以进行安检")
3.2 判断语句综合练习题
- 目标
- 1.强化多个条件的逻辑运算
- 2体会import导入模块(“工具包”)的使用
- 需求
- 1.从控制台输入要出的拳–石头 (1)/剪刀 (2) /布 (3)
- 2.电脑 随机出拳-先假定电脑只会出石头,完成整体代码功能
- 3.比较胜负
- 进阶需求
- 1.从用户输入要出的类型–石头 (1)/剪刀 (2) /布 (3)
- 2.电脑随机出拳完成整体代码功能
- 3.比较胜负
while True:try:preson = int(input(">>>>>"))except ValueError as e:print(e)continueif 1 <= preson <= 3:computer = random.randint(1, 3) # 石头(1) /剪刀 (2) /布 (3)if computer == 1: # 平局 电脑胜 玩家胜if preson == 1:print("平局")if preson == 2:print("电脑胜")if preson == 3:print("玩家胜")elif computer == 2:if preson == 1:print("玩家胜")if preson == 2:print("平局")if preson == 3:print("电脑胜")continueelse:if preson == 1:print("电脑胜")if preson == 2:print("玩家胜")if preson == 3:print("平局")else:print("输入错误,重新输入")continue
3.3 简化版写法
import random
while True:try:person = int(input("请输入你要输入的石头(1) /剪刀 (2) /布 (3)"))except ValueError as e:print(e)continueif 1 <= person <= 3:computer = random.randint(1,3)if person == computer:print("平局")elif (person == 1 and computer ==2) or (person == 2 and computer ==3) or (person ==3 and computer ==1):print("玩家胜")else:print("电脑胜")
3.4 python随机数的使用
random.randint(a,b) 生成指定范围内的整数
import random #导入随机数模块工具包# 导入模块后,可以直接在 模块名称后面敲一个然后按Tab 键,会提示该模块中包含的所有函数computer = random.randint(a,b) #生成指定范围内的整数 random.randint(12,20)#生成的随机数n: 12 <= n <= 20random.randint(20,20)# 结果永远是 20random.randint(20,10)# 该语句是错误的,下限必须小于上限
(四)if判断语句改版
assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误。assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具,可以有效预防 bug 的发生,提高程序的健壮性,
语法格式为:
assert 条件表达式
代码块
注意:①“条件表达式”后不用加冒号 : ②“代码块”前不用缩进。
a = int(input("请输入考试分数:"))
assert 0 <= a <= 100 # 断言数学考试分数是否位于正常范围内
print("你的考试成绩为:", a) # 只有当考试成绩位于 [0,100]范围内,程序才会继续执行
(五)三元表达式
表达式(1)为 True 执行语句 if 条件表达式(1) else 表达式(1)为 False 执行语句
示例代码:
age = 20cn = "成年" if age >= 18 else "未成年"
print(cn)
返回多个条语句
可以编写如下代码结构,在条件表达式中返回多条语句。
age = 20cn = "成年", "大于18" if age >= 18 else "未成年"
print(cn)
在函数内部使用三元表达式
有些简单的判定逻辑,可以直接使用三元表达式简化,例如判断传入参数是否为偶数。
def even_num(num):return True if num % 2 == 0 else False
二、循环语句
循环就是让代码一直重复的执行下去
python代码中的循环语句有两种1.for 2.while
(一)程序的三大流程
在程序开发中,一共有三种流程方式
- 顺序 – 从上向下,顺序执行代码
- 分支-- 根据条件判断,决定执行代码的分支
- 循环–让特定代码重复执行
(二)while循环语句
循环的作用就是让 指定的代码重复的执行
while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行
2.1while循环的定义
while循环语法:
初始条件设置--通常是重复执行的计数器
while 条件(判断 计数器 是否达到 目标次数):条件满足时,做的事情1条件满足时,做的事情2条件满足时,做的事情3...省略...处理条件(计数器+1)
需求--打印5遍Hello Python
思考--如果要求打印 100 遍怎么办?
i = 1
while i < 100:print("Hello World!")i+=1
print("一共输出 %d 次Hello World!" % i)
2.2 Python中的计数方法
常见的计数方法有两种,可以分别称为:
- 自然计数法(从1开始)–更符合人类的习惯
- 程序计数法(从0开始)–几乎所有的程序语言都选择从0开始计数
因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则循环 的计数都从0开始
循环计算
在程序开发中,通常会遇到利用循环重复计算的需求,遇到这种需求,可以
- 1在while上方定义一个变量,用于存放最终计算结果
- 2在循环体内部,每次循环都用最新的计算结果,更新之前定义的变量 需求
计算0~100之间所有数字的累计求和结果
i = 0
result = 0
while i <= 100:print(i)result += ii+=1
print(result)
计算0~ 100之间所有偶数的累计求和结果
i = 0
result = 0
while i <= 100:if i % 2 ==0:print(i)result += ii+=1
print(result)
i = 0
result = 0
while i <= 100:if i % 2 !=0:print(i)result += ii+=1
print(result)
2.3 break和continue
break 语句可以跳出 for 和 while 的循环体,就是循环整个终止,任何对应的循环 else 块将不执行。
continue 语句只是跳过本次循环块中的剩余语句,然后继续进行下一轮循环。
i = 0
while i <= 10:if i ==5:print(i)break i+=1
print(result)
i=0
while i < 10:# continue 某一条件满足时,不执行后续重复的代码# i== 3if i == 3:# 注意: 在循环中,如果使用 continue 这个关键字# 在使用关键字之前,需要确认循环的计数是否修改# 否则可能会导致死循环i += 1continueprint(i)i += 1
① 使用 break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行。但是,如果将 else 代码块中的代码直接放在循环体的后面,则该部分代码将会被执行。
对于嵌套的循环结构来说,break 语句只会终止所在循环体的执行,而不会作用于所有的循环体
2.4 pass 语句
Python 中的 pass 是空语句,pass 不做任何事情,表示一个占位符,一般用作占位语句,能够保证程序的代码结构正确,使用 pass 语句比使用注释更加优雅。
while True:pass
2.5 while…else… 循环
如果 while 后面的条件表达式判定为 False 时,则执行 else 的代码块,语法格式如下:
while 条件表达式:代码块(循环体)
else:代码块
# 计算 1-100 的和
sum_i = 0
i = 0
while 0 <= i <= 100:sum_i += ii += 1
else:print(end="\n")print(sum_i)
2.4 range 函数
range 函数是 Python 中的内置函数,用于生成一系列连续的整数,一般用于 for 循环体中,range 函数的一般语法格式为:range(start, stop, step)
for x in range(1, 8, 2):print(x)
2.5 while循环嵌套
while 嵌套就是:while 里面还有while
while 条件 1:条件满足时,做的事情1条件满足时,做的事情2条件满足时,做的事情3...(省略)...while 条件 2:条件满足时,做的事情1条件满足时,做的事情2条件满足时,做的事情3...(省略)...处理条件 2
处理条件 1
练习题:用套打印小星星
需求
在控制台连续输出五行*,每一行星号的数量依次递增
i = 1
while i <= 5:print("*" * i)i+=1
row = 1
while row <= 5:cow = 1while cow <= row:print("*", end="")cow += 1print("")row += 1
九九乘法表
i = 1
while i < 10:j = 1while j <= i:print("%d * %d = %d" % (j, i, j*i),end="\t") #制表符的功能是在不使用表格的情况下在垂直方向按列对齐文本j += 1print("")i += 1
知识点 对print函数的使用做一个增强
在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加:
end="",其中""中间可以指定 print 函数输出内容之后,继续希望显示的内容语法格式如下:
向控制台输出内容结束之后,不会换行print("*",end="")
单纯的换行print("")
i = 1
while i <= 5:print("*",end="")i+=1
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:print(b, end=',')a, b = b, a+b
(三)for 循环
Python for循环可以遍历任何序列的项目,变量序列可以是字符串、列表、元组、字典和集合
for 变量 in 集合:循环体代码
for letter in 'Python': # 第一个实例print("当前字母: %s" % letter)
for num in range(10,20): print(num)
3.1 for…else… 循环
for…else… 语句用于在循环结束后执行一段代码,语法格式为:
for 迭代变量 in 序列:代码块(循环体)
else:代码块
for num in range(10,20): # 迭代 10 到 20 (不包含) 之间的数字for i in range(2,num): # 根据因子迭代if num%i == 0: # 确定第一个因子j=num/i # 计算第二个因子print ('%d 等于 %d * %d' % (num,i,j))break # 跳出当前循环else: # 循环的 else 部分print ('%d 是一个质数' % num)
3.2 while 循环和 for 循环的比较
(1)while 循环
① while 循环称之为“条件循环”,循环次数取决于条件何时变为假;
② while 循环适合循环次数是未知的操作。
(2)for 循环
① for 循环称之为"取值循环",循环次数取决 in 后包含的值的个数;
② for 循环适合循环次数是已知的操作。