1 if语句
- if语句是用来进行判断的,其使用格式如下
if 要判断的条件:
条件成立时,要做的事情
案例一:
age = 30
print("------if判断开始------")
if age >= 18:
print("我成年了")
print("------if判断结束------")
运行结果:
案例二:
age = 16
print("------if判断开始-------")
if age >= 18:
print("我成年了")
print("------if判断结束-------")
运行结果:
总结:以上两个案例仅仅是age变量的值不一样,导致结果却不同;能够看得出来if判断语句的作用:就是当满足一定条件时才会执行代码块语句,否则就不执行代码块语句。
注意:代码的缩进为一个tab键,或者4个空格
在python开发中,Tab和空格不要混用
2 if-else语句
格式如下:
if 要判断的条件:
条件成立,要做的事情
......
else:
条件不成立,要做的事情
......
练习:
- 输入用户年龄
- 判断是否满18岁(>=)
- 如果满18岁,提示你以成年
- 如果未满18岁,提示未成年
# 输入用户年龄
age = int(input("请输入年龄:"))
# 判断是否满18岁(>=)
if age >= 18:
# 如果满18岁,提示你以成年
print("你以成年")
else:
# 如果未满18岁,提示未成年
print("未成年")
#这句代码无论条件是否成立都会执行
print("这句代码什么时候执行?")
输出结果:
注意:在python中通过控制台输入的内容类型是是字符串类型,在python中要进行大于等于的比较必须是相同的数据类型
3 if嵌套
if 条件 1:
条件 1 满足执行的代码
......
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
......
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
# 条件 1 不满足的处理
else:
条件 1 不满足时,执行的代码
......
if的嵌套 演练 -- 火车站安检
需求:
- 定义布尔型变量has_ticket表示是否有车票
- 定义整型变量knife_length表示刀的长度,单位:厘米
- 首先检查是否有车票,如果有,才允许进行安检
- 安检时,需要检查刀的长度,判断是否超过20厘米
- 如果超过20厘米,提示刀的长度,不允许上车
- 如果不超过20厘米,安检通过
- 如果没有车票,不允许进门
# 定义布尔型变量has_ticket表示是否有车票
has_ticket = True
# 定义整型变量knife_length表示刀的长度,单位:厘米
knife_length = 30
# 首先检查是否有车票,如果有,才允许进行安检
if has_ticket:
print("车票检查通过,准备开始安检")
# 安检时,需要检查刀的长度,判断是否超过20厘米
if knife_length > 20:
# 如果超过20厘米,提示刀的长度,不允许上车
print("你的刀太长,有%d厘米长" %knife_length)
print("不允许上车")
# 如果不超过20厘米,安检通过
else:
print("安检通过,欢迎乘车")
# 如果没有车票,不允许进门
else:
print("请先买票,谢谢配合!!!")
4 elif的使用格式
当条件A满足时做事情1;当条件A不满足、条件B满足时做事情2;当条件B不满足、条件C满足时做事情3,那么该怎么实现呢? 通过使用elif
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
说明:
- 当xxx1满足时,执行事情1,然后整个if结束
- 当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
- 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
choice = input('请输入你喜欢的游戏:')
if choice == '和平精英':
print('特种兵加油!')
elif choice == '王者荣耀':
print('敌军还有五秒到达战场')
elif choice == '英雄联盟':
print('英雄们加油啊!')
也可以和else一起使用:
if 性别为男性:
输出男性的体重
...
elif 性别为女性:
输出女性的体重
else:
第三种性别的体重
...
说明:
- 当”性别为男性“满足时,执行”输出男性的体重“的相关代码
- 当”性别为男性“不满足时,如果”性别为女性“满足,则执行”输出女性的体重“的相关代码
- 当”性别为男性“不满足,”性别为女性“也不满足,那么就默认执行else后面的代码,即”第三种性别的体重“相关代码
elif必须和if一起使用,否则出错
else一般用在最后,即所有条件都不满足时使用
5 循环语句
5.1 while语法
while 判断条件:
代码块
while循环的语法结构与if语句的结构区别:
- if语句只会执行一次判断条件,条件成立以后,只会执行一次代码块
- while语句,会先执行一次判断条件,如果条件成立,会执行一次代码块,代码块执行完成以后,会再次判断条件语句,如果还成立,将会再执行代码语句...直到最后条件不成立,
例如:输出十遍hello world
i = 1
while i <= 10:
print('hello world')
i += 1 #一定要记得让 i += 1,否则会造成死循环
注意:
1.初始化变量i
2.循环条件的制定
3.自增或者自减
例如:打印1-10的累加和
i = 1 #初始化变量i
total = 0 #用于求和
while i <= 10: # 条件在1-10以内
total += i # 累加求和
i += 1 # 一定要记得让 i += 1,否则会造成死循环
print(total)
例如:用户登陆有三次机会
i = 3
while i >= 1:
username = input('请输入用户名:')
password = input('请输入密码:')
#用户名是admin且密码是123456则身份验证成功否则验证失败
if username == 'admin' and password == '123456':
print('身份验证成功!')
break
else:
print('身份验证失败!')
i -= 1
print(f'还有剩余{i}次机会')
运行结果:
5.2 for循环与基础语法
5.1.1 for循环的格式
for 临时变量 in 序列:
循环满足条件时执行代码
说明:
- for 、in、冒号 - 固定写法
- 变量 -自定义变量名,要求和单独定义变量的时候一样
- 序列 -容器型数据类型的数据,比如:字符串、列表、元组、集合...
- 数字和布尔都不属于序列
- 循环体 -需要重复执行的代码:结构上必须和for保持一个缩进
- 遍历字符串:
for s in 'hello':
print(s)
输出结果:
- 换一种字符串的打印
str1 = 'abc'
for x in str1:
print('今天你学习了吗?')
输出结果:
5.1.2 range()函数
range()函数通常是结合for使用的,单独使用没有什么意义
for x in range(5):
print(x)
输出结果:
如上图range(5)产生的序列是0-4之间的数字。如果换成range(10)那么打印的是0-9之间的数字。
其实range的用法非常灵活,如下:
- range(101):可以用来产生0到100范围的整数,需要注意的是取不到101
- range(1,101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间
- range(1,101,2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值
- range(100,0,-2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值
实现1~100之间的偶数求和
total = 0
for x in range(2,101,2):
total += x
print(total)
5.1.3 break和continue
break:表示跳出整个循环结构
continue:表示跳过本次循环后面的语句不执行,继续下一次循环
i = 0
while i <= 12:
i += 1
if i == 7 or i == 11:
break
print(i)
运行结果:
从上运行的结果,可以发现在7的时候就结束了循环,即使i == 11 也没有任何作用,因为在7的时候就结束了。
将break换成continue
i = 0
while i <= 12:
i += 1
if i == 7 or i == 11:
continue
print(i)
运行结果:
continue是在7和11的时候跳过没有打印数字。
注意:
- 在python中,break和continue只能用于循环语句中。
- break和continue在嵌套循环中使用时,只对最内层循环有效
5.1.4 while和for与else的使用
在python中,循环语句还可以和else语句联合使用。
语法结构:
while 判断条件:
条件成立时,循环体代码
else:
循环后,不符合循环条件执行的代码
或者
for x in 序列:
循环体代码
else:
循环完所有序列,执行的代码
从上述结构中,我们可以看出,在非死循环中,正常情况下else里的语句都是会被执行的。那这个else语句到底有什么作用呢?一般情况下,循环语句和else共同出现时,在循环语句里都会配合break语句来使用。
i = 0
while i <= 12:
if i == 7:
break
i += 1
print(i)
else:
print('循环条件不成立时执行的代码')
从上述代码中,执行后发现else代码没有被执行,因为只要循环没有顺利完成,中间被break中断了则else里面的内容就不会执行。
5.1.5 综合案例
掷骰子游戏
- 欢迎进入皇家游戏长
- 输入用户名,默认用户没有币
- 提示用户充值买币(100块钱30币,充值必须是 100的倍数,充值不成功可以再次充值)
- 玩一局游戏扣除2个币,猜大【两个骰子相加和大于6】、小【两个骰子相加和小于6】(系统用1-6之间的随机数模拟骰子产生值)
- 只要猜对了奖励1个币,可以继续玩(想不想继续玩,也可以没有金币自动退出)
代码参考:
import random
print('*' * 30)
print('欢迎进入澳门皇家娱乐城')
print('*'*30)
username = input('输入用户名:')
coins = 0
answer = input('是否加入"猜猜乐"游戏(yes/no)')
if answer == 'yes':
#同意进入游戏
while True:
num = int(input('%s!当前您的金币为%d! 请充值(100块钱30币,充值必须是100的倍数):' %(username,coins)))
if num % 100 == 0 and num > 0:
#充值成功
coins += (num / 100) * 30
else:
print('充值失败!')
ans = input('是否继续充值(yes/no)?')
if ans == 'no': #not 5>3
break
print('当前金币数是:',coins)
#开始玩
print('玩一局扣除5个金币,进入游戏中……')
#计数器
count = 0
#可以玩多局
while True:
#模拟两个骰子 使用随机数
ran1 = random.randint(1,6)
ran2 = random.randint(1,6)
print(ran1)
print(ran2)
#扣金币
coins -= 5
#押大 押小 买定离手
print('押大?押小?买定离手!')
guess = input('输入大小:')
#判断输赢 6 ,如果赢返3金币,玩5局送10个
if(ran1 + ran2) > 6 and guess == '大' or (ran1 + ran2) <= 6 and guess == '小':
#金币累加
coins += 3
print('恭喜!你赢了!当前金币数是:',coins)
else:
print('很遗憾!回去多加练习!当前金币数是:',coins)
#计数的累加
count += 1
#送金币
if count % 5 == 0:
print('满五局送金币15个!!!')
coins += 15
#是否继续
flag = input('是否再玩一局游戏(yes/no)?')
if flag == 'no' or coins < 5:
print('主动离开或者金币不足!')
break
else:
print('欢迎下次再来!!!')