七、判断
关键字:if、 elif、 else
7.1、if结构
基本语法:
if 判断条件:
书写条件成立,执行代码
# 1 、if是一个关键字,和后续田间之间需要一个空格
# 2、判断条件后需要一个冒号
# 3、冒号后,回车,代码需要缩进,pycharm中会自动进行缩进,一般是4个空格 或者一个Tab健
# 4、所有在if代码下方的缩进中书写的代码,属于if语句的代码块,判断条件为True时会执行
# 5、if代码块中的代码,要么都执行,要么都不执行
# 6、if代码块结束之后,代码顶格书写,表示和if无关
# 使用input获取用户的年龄
age = input('请输入你的年龄')
# 判断年龄是否满足18岁
if int(age) >=18: # 字符串和整型不能比较大小
# 如果年龄大于等于18岁,输出满18,可以进网吧
print('满18可以进入网吧了')
练习
# 获取用户输入的用户名
user = input('请输入用户名')
# 如果用户名是admin,就在控制台输出
if user == 'admin':
print('欢迎 admin')
7.2、if else结构
基本语法:
if 判断条件:
书写条件成立,执行代码
else:
书写条件不成立,执行代码
# 1、else后面需要冒号
# 2、if else 的代码块只会执行一个
# 使用input获取用户的年龄
age = input('请输入你的年龄')
# 判断年龄是否满足18岁
if int(age) >= 18: # 字符串和整型不能比较大小
print('满18可以进入网吧了')
# 如果年龄大于等于18岁,输出满18,可以进网吧
# 如果不满足,输出回去写作业
else:
print('不满18岁,回去写作业')
练习
# 获取用户输入的用户名
user = input('请输入用户名')
# 如果用户名是admin,就在控制台输出
if user == 'admin':
print('欢迎 admin')
# 如果用户名不是admin,输出用户名错误
else:
print('用户名错误')
案例一:
# 获取用户输入的用户名和密码
user = input('请输入用户名')
pwd = input('请输入密码')
# 判断登录名是admin并且密码是123456时,输出:登录成功
if user == 'admin' and pwd == '123456': #引号内若有空格,如 'admin ',则输入admin不正确
print('登录成功')
# 否则输出:登录信息错误
else:
print('登录信息错误')
案例二:
# 获取用户输入的用户名
user = input('请输入用户名:')
# 判断用户名是admin,输出欢迎admin登录
if user == 'admin' or user =='test':
print(f'欢迎{user}登录')
# 判断用户名是test,输出欢迎test登录
# 如果是其他信息,输出查无此人
else:
print('查无此人')
7.3、if elif else 结构
如果某个判定条件有多个,此时建议使用if elif else 结构实现
语法:
if 判断条件1:
判断条件成立,执行程序
elif 判断条件2:
判断条件2成立执行代码
else:
以上条件都不成立,执行的代码
# 1、在一个if判断中可以有很多个elif
# 2、只有if的条件不成立,才会判断elif的条件
# 3、有多个elif时,只要有一个条件成立,后续都不在判断
# 4、多个if结构,没有关联性
elif实现案例:
# 定义score变量记录考试分数
# 如果分数是大于等于90分应该显示优
# 如果分数是大于等于80分并且小于90应该显示良
# 如果分数是大于等于70分并且小于90应该显示中
# 如果分数是大于等于60分并且小于70分应该显示差
# 其他分数显示不及格
score = int(input('请输入分数'))
if score >= 90:
print('优')
elif (score>=80) and score<90:
print("良")
elif score >=70: # score<80可以不写,上面判断不成立,才会执行这个
print('中')
elif score >=60:
print('差')
else:
print('不及格')
7.4、if嵌套结构
if嵌套
使用场景:判断条件存在递进关系(只有第一个条件满足了,才会判断第二个条件)
语法:
if 判断条件:
判断条件1成立,执行代码
if 判断条件2:
判断条件2成立,执行代码
else :
判断条件2不成立,执行代码
else:
判断条件1不成立,执行代码
#取款机取钱的过程,假定密码为:123456,账户余额为1000
pwd = '123456'#可以预先定义变量,也可以在判断的时候直接使用
money = 1000 #可以预先定义变量,也可以在判断的时候直接使用
#提示用户输入密码
password = input('请输入密码:')
#判断密码是否正确
if password == pwd:
print('密码正确,登录成功')
#密码正确后,提示取款金额
get_money = int(input('请输入取款金额'))
#判断取款金额和余额的关系
if get_money <= money:
print('取款成功')
else:
print('余额不足')
else:
print('密码错误,请再次尝试')
7.5、练习(出拳游戏)
#假定某网站用户名固定为'admin',密码固定为’123456‘,验证码固定为’8888‘
#获取用户输入的用户名,密码和验证码
user = input('请输入用户名')
pwd = input('请输入密码')
code = input('请输入验证码')
#先判断验证码是否正确,如果正确输出验证码正确,再判断用户名和密码是否正确
if code == '8888':
print('验证码正确')
if user=='admin' and pwd=='123456':
print('用户名正确')
else:
print('用户名或密码错误,请重新尝试')
#如果验证码不正确,直接输出 验证码不正确,请重新输入
else:
print('验证码不正确,请重新输入')
猜拳游戏:
案例步骤:
1、自己出拳(石头(1)/剪刀(2)/步(3))input (player)
2、电脑随机出拳(computer)
3、判断输赢
3.1、玩家胜利
player==1 and computer==2
or player==2 and computer==3
or player==3 and computer==1
3.2、平局
player==computer
3.3、玩家输了else
随机出拳:
需要电脑随机出拳
在python中想要随机获得数字方法
# 1、导入随机数工具包
import random
# 2、使用工具包中的工具产生指定范围内的数字
random.randint(a,b) # 产生[a,b]之间的随机整数,包含a b的
import random # 这行代码习惯放在第一行
num = random.randint(1,3)
print(num)
猜拳游戏程序:
import random
# 1、自己出拳(石头(1)/剪刀(2)/步(3))input (player)
player = int(input('出拳石头(1)/剪刀(2)/步(3):'))
# 2、电脑随机出拳(computer),使用随机数模块完成
computer = random.randint(1, 3)
# 3、判断输赢
# 3.1、玩家胜利
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
print('恭喜你胜利')
# 3.2、平局
elif player == computer:
print('平局')
# player==computer
# 3.3、玩家输了else
else:
print('输了,不要放弃,再来一局')
八、Debug调试代码
debug在代码中出现错误,可以使用debug来调试代码,查找错误
我们用debug主要 用来查看代码的执行步骤
1、打断点
在pycharm中,代码和行号之间进行点击,出现小红点即打断点,再次点击红点会消失
断点的位置一般会出现在第一行(在运行的时候,想要在什么地方停下来)
注意点:可能会出现的bug(pycharm软件问题):代码中只有一个断点的时候不能debug调试查看代码执行过程,解决方案,在代码其他任意地方多加一个断点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXJLpCGu-1649770649000)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649747339530.png)]
2、右键debug运行代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWYActKr-1649770649014)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649747529295.png)]
3、单步执行F8
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufXBu8SH-1649770649016)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1649748403038.png)]
九、循环
三大流程:
1、顺序,代码从上到下,全部执行
2、分支,判断语句,代码有选择性的执行
3、循环,重复执行某一部分代码
9.1、while循环
语法:
1、设置循环的初始条件
2、书写循环的判断条件
while 判断条件:
需要重复执行的代码
改变循环的初始条件(计数器)
#设置循环的初始条件(记录说了几遍 我喜欢你)
i = 0
# 书写判断条件
while i<5:
#重复执行的代码
print ('我喜欢你')
#改变初始条件
#i=i+1
i +=1
9.2、死循环和无限循环
-
死循环:一般由于写代码不小心造成的bug
-
无限循环:写代码的人故意让代码无限的去执行,在书写循环时,不知道循环要执行多少次
无限循环的使用一般会在循环中添加一个if判断,当if条件成立,使用关键字break来终止循环
while True:
重复执行的代码 # 可以在if的上边
if 判断条件:
break #当代码遇到break,这个循环就不再执行了
重复执行的代码 #可以在if的下边
-
书写循环的技巧:
确定这行代码执行几次,如果执行多次,就放在循环的缩进中,如果只执行一次,就不要放在循环的缩进中
import random
while True: #不知道想玩几次
# 1、自己出拳(石头(1)/剪刀(2)/步(3))input (player)
player = int(input('出拳石头(1)/剪刀(2)/步(3):'))
if player==0:
break #代码遇到break就会终止循环
# 2、电脑随机出拳(computer),使用随机数模块完成
computer = random.randint(1, 3)
# 3、判断输赢
# 3.1、玩家胜利
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
print('恭喜你胜利')
# 3.2、平局
elif player == computer:
print('平局')
# player==computer
# 3.3、玩家输了else
else:
print('输了,不要放弃,再来一局')
9.3、练习
使用循环求1-100的和
# 定义变量 保存求和的结果
num = 0
# 定义循环获取1-100之间的数字并求和
i = 1 # 定义初始条件
while i <= 100: # 书写循环条件
num += i # 书写重复执行的代码0+1+2+3+4+...+100
i += 1 # 改变计数器
# 打印求和的结果
print('求和的结果是:', num)
使用循环求1-100之间偶数的和
方法一:
直接找到1-100之间的偶数,进行相加
# 定义变量 保存求和的结果
num = 0
# 定义循环获取1-100之间的数字并求和
i = 2 # 定义初始条件
while i <= 100: # 书写循环条件
num += i # 书写重复执行的代码0+1+2+3+4+...+100
i += 2 # 改变计数器
# 打印求和的结果
print('求和的结果是:', num)
方法二:
找1-100之间的所有数字
判断这个数是不是偶数,如果是偶数再求和
偶数:能被2整除的数
num = 0
i = 1
while i <= 100:
if i % 2 == 0:
num += i
i += 1
print('求和结果是:',num)