当前位置: 首页 > news >正文

Python学习——【2.1】if语句相关语法

文章目录

  • 【2.1】if语句相关
    • 一、布尔类型和比较运算符
      • (一)布尔类型
      • (二)比较运算符
    • 二、if语句的基本格式
      • ※、练习
    • 三、if-else组合判断语句
      • ※、练习
    • 四、if-elif-else多条件判断语句
      • ※、练习
    • 五、判断语句的嵌套
    • ※、实战案例

【2.1】if语句相关

一、布尔类型和比较运算符

(一)布尔类型

  进行判断,只有两个结果:

  那么,在程序中,如何描述呢?

  使用:布尔类型。

image-20240916131440746

  布尔类型是数字类型下的一个小类。它有两个字面量,TrueFalse,分别表示真和假。之所以布尔类型被划分到数字类型下面,是因为True本质是一个数字1,False本质是一个数字0。

  布尔类型不仅可以自行定义,同时也可以通过计算得来,即通过比较运算符进行比较运算得到布尔类型的结果。

(二)比较运算符

  布尔类型的数据,不仅可以通过定义得到,也可以通过比较运算符进行内容比较得到。

result = 10 > 5
print(f"10 > 5 的结果是:{result},类型是:{type(result)}")result = "xiaoming" == "zhangsan"
print(f"字符串xiaoming是否和zhangsan相等?结果是:{result},类型是:{type(result)}")

输出结果如下:

10 > 5 的结果是:True,类型是:<class 'bool'>
字符串xiaoming是否和zhangsan相等?结果是:False,类型是:<class 'bool'>

image-20240916132327638

二、if语句的基本格式

  if判断语句语法如下:

if 要判断的条件:条件成立时,要做的事情

  当if后面要判断的条件为True时,if语句内的代码会被执行;当为False时,代码不会被执行。

  例如:

# 定义变量
age = 30# 进行判断
if age >= 18:print("我已经成年了")

  注意,在if语句内部,可以写任意多的代码,而不是只能写一行。但一定要注意,归属于if语句的代码块,其前方要正确进行缩进。

age = 18print(f"今年我已经{age}岁了。")if age >= 18:print("我已经成年了")print("即将步入大学生活")print("时间过得真快")

  当age为18时,输出结果如下:

今年我已经18岁了。
我已经成年了
即将步入大学生活
时间过得真快

  当age为10时,输出结果如下:

今年我已经10岁了。
时间过得真快

※、练习

案例:成年人判断

  结合前面学习的input输入语句,完成如下案例:

  1.通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型)

  2.通过if判断是否是成年人,满足条件则输出提示信息,如下:

欢迎来到游乐场,儿童免费,成人收费。
请输入你的年龄:30
您已成年,游玩需要补票10元。
祝您游玩愉快。

我的代码

print("欢迎来到游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))if age >= 18:print("您已成年,游玩需要补票10元。")print("祝您游玩愉快。")

三、if-else组合判断语句

  if-else判断语法如下:

if 条件:满足条件时要做的事情1满足条件时要做的事情2满足条件时要做的事情3...
else:不满足条件时要做的事情1不满足条件时要做的事情2不满足条件时要做的事情3...

  例如:

print("欢迎来到游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))if age >= 18:print("您已成年,游玩需要补票10元。")
else:print("您未成年,可以免费游玩。")print("祝您游完愉快。")

  说明:

  1.if和其代码块,条件满足时执行;

  2.else搭配if,表示当不满足时执行;

  3.else不需要写判断条件,当与之搭配的if的条件不满足时,即else执行;

  4.else下的代码块,同样需要注意正确的缩进。

※、练习

案例:我要买票吗

  通过input语句获取键盘输入的身高。

  判断身高是否超过120cm,并通过print给出提示信息。

欢迎来到动物园。
请输入你的身高(cm):130
你的身高超过120cm,游玩需要购票10元。
祝您游玩愉快。
欢迎来到动物园。
请输入你的身高(cm):110
你的身高未超过120cm,可以免费游玩。
祝您游玩愉快。

我的代码

print("欢迎来到动物园")
height = int(input("请输入你的身高(cm):"))if height > 120:print("你的身高超过120cm,游玩需要购票10元。")
else:print("你的身高未超过120cm,可以免费游玩。")
print("祝您游玩愉快。")

四、if-elif-else多条件判断语句

  某些场景下,判断条件不止一个,可能有多个。

  if-elif-else多条件判断语法如下:

if 条件1:条件1满足时应该做的事情...
elif 条件2:条件2满足时应该做的事情...
elif 条件N:条件N满足时应该做的事情...
else:上面所有条件都不满足时应该做的事情...

  例如:

print("欢迎来到动物园。")
height = int(input("请输入你的身高(cm):"))
vip_level = int(input("请输入你的vip级别(1~5):"))
day = int(input("请输入今天的日期(1~31):"))if height < 120:print("您的身高小于120cm,可以免费游玩。")
elif vip_level > 3:print("您的vip级别大于3,可以免费游玩。")
elif day == 1:print("今天是1号免费日,可以免费游玩。")
else:print("不好意思,所有免票条件都不满足,您需要购票10元。")print("祝您游玩愉快。")

  判断是互斥且有顺序的,对于上述例子:

  1.从上到下,一旦有一个条件得到满足,就不再理会后续条件。比如,一旦满足条件1,就不再理会条件2和3。若不满足条件1,但满足条件2,则不再理会条件3。所有条件都不满足,才会进入else。

  2.else不是必须要写的,可以不写。

  另外,对于上面例子的代码,可以进一步简化一下,如下所示:

print("欢迎来到动物园。")if int(input("请输入你的身高(cm):")) < 120:print("您的身高小于120cm,可以免费游玩。")
elif int(input("请输入你的vip级别(1~5):")) > 3:print("您的vip级别大于3,可以免费游玩。")
elif int(input("请输入今天的日期(1~31):")) == 1:print("今天是1号免费日,可以免费游玩。")
else:print("不好意思,所有免票条件都不满足,您需要购票10元。")print("祝您游玩愉快。")

  这样写的好处在于:第一,不需要定义变量了,代码比较“简洁”;第二,由于“一旦有一个条件得到满足,就不再理会后续条件”的规则,所以某些情况下可以少做input操作。

※、练习

案例:猜数字

  1.定义一个变量,数字类型,内容随意。

  2.基于input语句输入猜想的数字,通过if和多次elif的组合,判断猜想数字是否正确。

请输入第一次猜想的数字:1
不对,再猜一次:2
不对,再猜最后一次:3
Sorry,全部猜错啦,我的数字是:10

我的代码

num = 10if int(input("请输入第一次猜想的数字:")) == num:print("恭喜你,猜对了。")
elif int(input("不对,再猜一次:")) == num:print("恭喜你,猜对了。")
elif int(input("不对,再猜最后一次:")) == num:print("恭喜你,猜对了。")
else:print(f"Sorry,全部猜错啦,我的数字是:{num}")

五、判断语句的嵌套

  有很多场景,不仅仅是多个条件并列的关系,还会有满足前置条件才会进行二次判断的多层判断需求。

  语法格式如下:

if 条件1:满足条件1时做的事情...if 条件2:满足条件2时做的事情...

  如上所示,对于第二个if,它位于第一个if的代码块内,因此只有当第一个if满足条件时,才会执行第二个if。

  嵌套的关键点,在于空格缩进。通过空格缩进,来决定语句间的层次关系

  例如:

print("欢迎来到动物园。")
if int(input("输入你的身高:")) > 120:print("你的身高大于120cm,不可以免费")print("不过如果你的vip等级高于3,可以免费游玩")if int(input("输入你的vip等级:")) > 3:print("你的vip等级大于3,欢迎你免费游玩。")else:print("Sorry,你需要补票10元。")
else:print("欢迎你免费游玩。")

  说明:

  1.嵌套判断语句可以用于多条件、多层次的逻辑判断;

  2.嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断;

  3.嵌套判断语句,一定要注意空格缩进,因为Python是通过空格缩进来决定层次关系的。

※、实战案例

案例需求

  定义一个数字(1-10,随机产生),通过3次判断来猜数字。

案例要求

  1.数字随机产生,范围1-10;

  2.有3次机会猜测数字,通过3层嵌套判断实现;

  3.每次猜不中,会提示大了或小了。

  提示,通过如下代码,可以定义一个变量num,变量内存储1-10随机数字。

import random
num = random.randint(1, 10)

代码

# 构建一个随机数字变量
import random
rand_num = random.randint(1, 10)guess_num = int(input("请输入你猜的数字:"))
if guess_num == rand_num:print("恭喜你,第一次就猜中了!")
else:if guess_num > rand_num:print("你猜的数字偏大了")else:print("你猜的数字偏小了")guess_num = int(input("请输入你猜的数字:"))if guess_num == rand_num:print("恭喜你,猜中了。")else:if guess_num > rand_num:print("你猜的数字偏大了")else:print("你猜的数字偏小了")guess_num = int(input("请输入你猜的数字:"))if guess_num == rand_num:print("恭喜你,在最后一次机会时猜中了。")else:print("仍然没有猜中,三次机会用完了,游戏结束。")

注:

  使用for循环或while循环能更好地实现这个需求。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3 生命周期,代码说明
  • Git使用—把当前仓库的一个分支push到另一个仓库的指定分支、基于当前仓库创建另一个仓库的分支并推送到对应仓库(mit6828)
  • 达梦数据库导入xml迁移到达梦数据库大文件导致中断问题解决方案记录?
  • keep-alive原理
  • Linux:进程(二)
  • GitLab权限及设置
  • 使用rust自制操作系统内核
  • Python基础语法(3)下
  • 【C++ Primer Plus习题】16.9
  • 【Unity】检测鼠标点击位置是否有2D对象
  • 【软考】数据字典(DD)
  • 网络安全(黑客)详细自学路线 一一2024新版
  • 开放标准如何破解企业数字化与可持续发展的困境:The Open Group引领生态系统架构创新
  • Qt基础操作槽函数
  • docker挂载宿主机文件run命令启动报错
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【Linux系统编程】快速查找errno错误码信息
  • angular学习第一篇-----环境搭建
  • Computed property XXX was assigned to but it has no setter
  • ES6 ...操作符
  • FineReport中如何实现自动滚屏效果
  • github指令
  • HTTP请求重发
  • Python_网络编程
  • React-Native - 收藏集 - 掘金
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spring-boot 启动时碰到的错误
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 关于extract.autodesk.io的一些说明
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 码农张的Bug人生 - 初来乍到
  • 山寨一个 Promise
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 算法---两个栈实现一个队列
  • 微信开放平台全网发布【失败】的几点排查方法
  • 为什么要用IPython/Jupyter?
  • 物联网链路协议
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Java数据解析之JSON
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 职场生活之道:善于团结
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (4) PIVOT 和 UPIVOT 的使用
  • (a /b)*c的值
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (HAL库版)freeRTOS移植STMF103
  • (Java数据结构)ArrayList