ctrl+/快速注释
1.判断语句:
<1> if:
(1)格式:
age = 18
if age >= 18:print("成年了!")
print("事件好快")
【注意】1.判断语句的结果,必须是布尔类型True或False;
2.归属于if判断的代码语句块,需在前方填充4个空格缩进;
3.python通过缩进判断代码块的归属关系;
(2)成年人判断练习:
"""1.通过input语句,获取键盘输入,为变量age赋值。(注意:转换成数字类型)2.通过if判断是否是成年人,满足条件输出提示信息。
"""
print("欢迎进入水上世界乐园")
age = input("请输入您的年龄:")
age = int(age)
if age >= 18:print("您已成年,游玩需要另加20元")print("祝您玩的愉快!")
(3)自动类型转换:
if语句需要一个判断条件(结果需要布尔值)。
【注意】在python中,转换成为布尔值时,只有0,' ', " ", None,( ), { }, [ ]会被转换成为False,其他都会被转换成True.
if '0': # 只要不是0,"",'',None,(),{},[],那就其余都是真print('$'*10)
else:print('0'*10)
<2> if else:
(1)格式:
print("欢迎进入水上世界乐园")
age = int(input("请输入您的年龄:"))
if age >= 18:print("您已成年,游玩需要另加20元")
else:print("您未成年,请到小孩专区游玩")
print("祝您玩的愉快!")
【注意】1.else后,不需要判断条件;
2.和if的代码块一样,else的点开同样需要4个空格作为缩进;
(2)练习:
"""1.通过input语句,获取键盘输入身高,2.通过if判断是否超过120cm,满足条件输出提示信息。
"""
print("欢迎进入水上世界乐园")
height = int(input("请输入您的身高(cm):"))
if height >= 120:print("您身高超过120cm,游玩需要加20元")
else:print("您身高未超过120cm,请到小孩专区游玩")
print("祝您玩的愉快!")
<3> if elif else :
(1)格式:
print("欢迎进入水上世界乐园")
height = int(input("请输入您的身高(cm):"))
vip_level = int(input("请输入您的会员等级(1~5):"))
if height < 120:print("您身高未超过120cm,请到小孩专区免费游玩")
elif vip_level > 3:print("您是vvip客户,可以免费玩")
else:print("不好意思,免费条件不满足,您得另外补差价20元")print("祝您玩的愉快!")
【注意】1. elif可以写多个;
2.判断是互斥且有序的,上一个满足后面的就不会判断了;
3.同样注意缩进;
4. 可以将input语句写入判断条件中;
print("欢迎进入水上世界乐园")
if int(input("请输入您的身高(cm):")) < 120:print("您身高未超过120cm,请到小孩专区免费游玩")
elif int(input("请输入您的会员等级(1~5):")) > 3:print("您是vvip客户,可以免费玩")
elif int(input("请输入今天的日期(1~31):")) == 1:print("今天是水上世界乐园的免费日")
else:print("不好意思,免费条件不满足,您得另外补差价20元")print("祝您玩的愉快!")
(2) 猜心里面的数字练习:
"""1.定义一个变量,数字类型,内容随意;2.基于input语句输入猜想的数字,通过if 和多次elif的组合,判断猜想数字是否和心里面数字一致;
"""
num = int(input("请输入你想的数字:"))
if num == int(input("请输入第一次猜想的数字:")):print("对")
elif num == int(input("不对,请输入第二次猜想的数字:")):print("对")
elif num == int(input("不对,请输入这次猜想的数字:")):print("对")
else:print(f"不对,全猜错了,我想到的是{num}")
<4>判断语句的嵌套:
(1)为什么用?
很多场景中,不仅是多个并列条件,还会有满足前置条件才会二次判断的多层判断需求;
(2)作用场景:
多条件、多层次的逻辑判断;
(3)if-else嵌套格式:
- 嵌套关键点:缩进,决定语句之间的层次关系;
print("欢迎进入游乐园")
if int(input("请输入你的身高(cm):")) > 120:print("你的身高大于120cm,到成人票位置")if int(input("请告诉我你的会员等级(1~5):")) > 3:print("恭喜vvvip,您免费玩")else:print("补20元")
else:print("请到儿童区免费游玩")
(4)if-elif-else嵌套:
"""公司发礼物:1.必须大于等于18岁小于30岁的成年人;2.同时入职时间需满足大于两年,或者级别大于3才可领取;
"""
age = int(input("请输入您的年龄:"))
if age >= 18:if age < 30:if int(input("入职时间")) >= 2:print("满足条件")elif int(input("输入级别")) >= 3:print("行")else:print("x")else:print("x")
else:print("x")
<5>实战案例:
(1)猜随机数字:
"""案例需求:定义一个数字(1~10,随机产生),通过三次判断来猜出来数字案例要求:1.数字随机产生,范围1~102.有3次机会猜测数字,通过3层嵌套判断实现3.每次猜不中,会提示大了、小了;
"""
import random
num = random.randint(1, 10)
print(f"{num}")num1 = int(input("请输入猜测的数字:"))if num == num1:print("对")
else:if num > num1:print("小了")else:print("大了")num1 = int(input("再猜:"))if num == num1:print("对")else:if num > num1:print("小了")else:print("大了")num1 = int(input("再猜:"))if num == num1:print("对")else:if num > num1:print("小了")else:print("大了")print("全错了")
(2)优惠券:
"""阿里巴巴商家节,用户:消费总金额,账户金额,优惠劵输入购买总金额,如果金额0~500则是lv1级别,500~2000元是lv2,2000以上是lv3lv1:随机赠送3张1~10元优惠劵lv2:赠送2张50元优惠劵,如果充值则送充值金额的10%lv3:赠送2张100元优惠劵,如果充值则送充值金额的15%
"""
user = 'lisi'
total_money = float(input("请输入总购买金额:"))
user_money = 0
coupon = 0
if total_money >= 500:if total_money <= 2000:print("您等级是lv2,赠送2张50元优惠劵,如果充值则送充值金额的10%")coupon = 50*2print("您需要充值吗?")if input('') == '是':charge_money = int(input('输入充值金额:'))user_money += charge_money + 0.1*charge_moneyprint(user_money)else:print("您等级是lv3,赠送2张100元优惠劵,如果充值则送充值金额的15%")coupon = 100 * 2print("您需要充值吗?")if input('') == '是':charge_money = int(input('输入充值金额:'))user_money += charge_money + 0.15 * charge_moneyprint(user_money)
else:print("您等级是lv1,会随机赠送您1~10元优惠券")import randomcoupon1 = random.randint(1, 10)coupon2 = random.randint(1, 10)coupon3 = random.randint(1, 10)coupon =coupon1 + coupon2 + coupon3print(f'恭喜您获得3张优惠劵,分别是:{coupon1}元、{coupon2}元和{coupon3}元,总共价值{coupon}元')
(3)模拟超市付款:
"""模拟超市付款:商品单价 商品数量键盘输入商品单价,以及商品数量然后计算应付总额计算总额 float提示用户可以有4种付款方式不同的付款方式有不同的折扣:先展示四种付款方式现金没有折扣微信 0.95折支付宝 鼓励金付款金额的10% 鼓励金可以直接折算到付款金额中刷卡 满100-20
"""
apple_money = float(input("请输入商品的单价:"))
apple_sum = int(input("请输入商品的数量:"))
total_money = apple_money * apple_sum
print("总共消费%.2f" % total_money)
money_type = int(input('请输入付款方式(1:微信;2:支付宝;3:刷卡):'))if money_type == 1:total_money *= 0.95print("总共消费%.2f" % total_money)elif money_type == 2:total_money = total_money - total_money * 0.1print("总共消费%.2f" % total_money)else:if total_money > 100:sum = total_money // 100total_money = total_money - sum*20print("总共消费%.2f" % total_money)else:print("总共消费%.2f" % total_money)
2.三元运算符:
<1>格式:
变量 = 值1 if 条件 else 值2
解释:当条件成立时,把值1赋值给变量,条件不成立是,把值2赋值给变量。(其实就是对if……else语句的简写。)
【注意】代码量少才可以使用;
b = 3
a = 4
# if a < b:
# c = a
# else:
# c = b
c = 2 if a > b else 3
print(a, b, c)
3.循环语句:
<1>while:
(1)格式:
【注意】条件是结束条件
n = 0
while n < 100:print("Hello World")n += 1
print(n)while n < 10:n += 1print(n)# 打印1~50之间能被3整除的数字
while n <= 50:if n % 3 == 0:print(n)n += 1# 1~10累加和
while n <= 10:sum += nn += 1
print(sum)
(2)break:
(3)商品问题:
"""去超市买东西,价格和数量,允许买多件商品计算所有商品的总额
"""
total = 0
while True:#第一次买price = float(input("请输入价格:"))sum = int(input("请输入数量"))total += price * sum# 判断是否继续购买if input("当前花费%.2f,是否继续购买(Y或N)" % total) == 'N':break # 跳出当前循环结构
print("共花费%.2f" % total)
(4)猜数字:
# 产生随机数
import random
numbers = random.randint(1, 50)
print(numbers)
sum = 0
# 判断是否猜正确,不正确继续猜
# 不知道猜测次数用True
while True:numbers2 = int(input("请输入你猜的数字:"))sum += 1if numbers2 > numbers:print("大了")elif numbers2 < numbers:print("小了")else:print("对")if sum == 1:print("去买彩票吧")elif 2 <= sum <= 5:print("运气还可以")else:print("运气一般")break
print(sum)
(5)人机猜拳:
"""猜拳游戏:3局2胜
"""
import random
n = 1
win = 0
# 3局两胜(已经限制次数)
while n <= 3:# 猜拳game0 = random.randint(1, 3)print(game0)game = int(input("请输入剪刀(1)布(2)石头(3):"))# 判断赢家,玩家胜则玩家胜局+1;if game == 1 and game0 == 2 or game == 2 and game0 == 3 or game == 3 and game0 == 1:print("玩家赢")win += 1elif game == game0:continueelse:print("电脑赢")n += 1
# 输出最终结果:
if win >= 2:print("最终玩家获胜")
else:print("最终电脑获胜")
<2>for:
(1)格式:
for 变量名 in range(n): 语句 |
(2)range(n):
表示从0开始取值,到n-1结束;
(3)range(start,stop)
表示从start开始取值,到stop-1结束;
(4)range(start,stop,step):
从start开始,间隔step(步长)再取数,到stop-1结束;
【注意】默认step为1;
for i in range(1, 10):print(i)for a in range(10):print(a)for b in range(1, 10, 2):print(b) # 结果:1,3,5,7,9
例:
# 1~50累加和
sum = 0
for i in range(1, 51):sum += i
print(sum)# 最多输入用户名和密码,如果三次没有登录成功,提示账号被锁定for i in range(1, 4):name = str(input("请输入用户名:"))password = str(input("请输入密码:"))if name == 'admin' and password == '1234':print("登陆成功!")breakelse:if i < 3:print("用户名密码出错,请再次输入")else:print("三次输入机会已经用完,账户被锁定")
<3>for…else:
(1)格式:
for i in range(n): 循环体 else: 如果上面的for循环 0~n-1 没有出现中断(break) |
(2)例:
# 最多输入用户名和密码,如果三次没有登录成功,提示账号被锁定for i in range(3):name = str(input("请输入用户名:"))password = str(input("请输入密码:"))if name == 'admin' and password == '1234':print("登陆成功!")breakprint("用户名密码出错,请再次输入")
else:print("三次输入机会已经用完,账户被锁定")
<4>.while…else:
(1)格式:
while 条件: 循环语句 else: 语句 |
【注意】只要在while条件里面出现break,不会去执行else;也就是不被中断才执行else。
n = 1
while n < 5:n += 1print(n)if n == 5:break
else:print("不成立")# 当n==5时,直接走break,不会执行else里面的语句;
# 结果是: 2
# 3
# 4
# 5
<5>使用场景区分循环:
循环语句 | 区别 |
for i in range(n): 语句 | 固定次数 |
while 条件: 语句 | 1:固定次数循环 2:不确定次数的循环 while True: 语句 |
<6>经典案例:
(1)while打印*:
"""while循环:*******************************
"""
n = 1
# 行数
# while n <= 4:
# print("*"* 4)
# n += 1# while n <= 5:
# print("*" * n)
# n += 1
while n <= 5: # 行数m = 0while m < n:print("*", end='') # end=''表示在同一行输出m += 1n += 1print()
(2)掷骰子:
"""掷骰子:两个:1~61:玩游戏要有金币,不能玩游戏2:玩游戏赠金币1枚,充值获取金币3:10元的倍数,20个金币4:玩游戏消耗金币5个金币5:猜大小 猜对鼓励金2枚,猜错没有奖励,超出6点以上认为大,否则小6:游戏结束 :1主动退出 2:没有金币退出7:只要退出则打印金币数,共玩了几局"""
import random
gold = 0
game = 0
if gold < 5:print("金币不足请充值,满十元给20个金币")while True:money3 = int(input("请输入充值多少钱:"))if money3 % 10 == 0:gold = money3 // 10 * 20print("充值成功,当前金币%d个" % gold)# 开玩print("$"*20)question = int(input('是否开始(1:是 2:否)'))while gold > 5 and question == 1:gold -= 5gold += 1game += 1ran1 = random.randint(1, 6)ran2 = random.randint(1, 6)print("请猜大小")guess = input("请输入你猜的大小:")if guess == '大' and ran2 + ran1 > 6 or guess == '小' and ran2 + ran1 <= 6:print('猜对了')gold += 2else:print('错')question = int(input('是否继续(1:是 2:否)'))while question == 2 or gold // 5 == 0:breakbreakelse:print("充值失败")print(f"金币有{gold}个,玩了{game}局")
4.跳转语句:
<1>break:
(1)作用:
直接结束循环
(2)适用:
- for循环和while循环,效果一致
| 永久中断 |
<2>continue:
(1)作用:
中断本次循环,直接进入下一次循环
(2)适用:
- for循环和while循环,效果一致
| 应用场景:在循环中,某些原因,临时结束本次循环 |
- 只能控制所在循环临时中断
- 例:
n = 0
for i in range(1, 6):print("语句1")n += 1for j in range(1, 6):print("语句2")continueprint("语句3")
print("语句4",n)
# 结果:[语句1(1次)语句2(5次)](执行5次) ,语句4(1次)
【注意】在嵌套循环中,只能作用在所在循环上,无法对上层循环起作用