Python语法基础--条件选择

news2025/1/18 21:18:51

学习目标

  • 使用比较运算符编写布尔表达式。
  • 使用random.randint(a,b)或者random.random()函数来生成随机数。
  • 编写布尔表达式(AdditionQuiz)。
  • 使用单向if语句实现选择控制。
  • 使用单向if语句编程。
  • 使用双向if-else语句实现选择控制。
  • 使用嵌套if和多向if-elif-else语句实现选择控制。
  • 避免if语句里的常见错误。
  • 使用选择语句编程。
  • 使用逻辑运算符(and、or和not)组合各种条件。
  • 使用带组合条件的选择语句(LeapYear、Lottery)。
  • 编写使用条件表达式的表达式。
  • 了解控制运算符优先权和结合性的规则。
  • 检测出一个对象的位置。

一、引言

关键点:程序可以根据某个条件决定执行哪条语句。

        如果在计算圆的面积程序清单中输入一个负的radius值,程序将产生一个无效结果。如果这个半径是负的,程序将无法计算这个区域。你怎么解决这种情况呢?

        就像所有的高级程序设计语言一样,Python提供选择语句让你可以在两个或多个不同条件下选择不同的动作。你可以使用下面的选择语句来替换程序清单中的代码:

if radius < 0:
    print("Incorrect input")
else:
    area = radius * radius * math.pi
    print("Area is", area)

选择语句使用的条件称为布尔表达式。本章将介绍布尔类型、数值、比较运算符以及表达式。

二、布尔类型、 数值和表达式

关键点:布尔表达式是能计算出一个布尔值True或False的表达式。

        怎么比较两个数值呢?例如,半径是大于0、等于0还是小于0? Python 提供了六种比较运算符(也称为关系运算符),如表4-1所示,那么哪个用来比较两个数值呢? (表中假设使用的半径是5)。

警告:比较运算符的相等是两个等号(==),而不是单个等号(=),后者是用来赋值的。

        比较的结果就是一个布尔逻辑值: True 或False。例如:下面的语句显示结果为True。

radius = 1
print(radius > 0)

        存储布尔值的变量被称为布尔变量。布尔数据类型被用来代表布尔值,一个布尔变量可以代表True或False值中的一个。例如:下面的语句将True赋值给变量lightson。

lightsOn = True

        True和False都是字面量,就像数字10是字面量一样。它们都是保留字,不能在程序中被当作标识符。

        在计算机内部,Python使用1来表示True而使用0来表示False。你可以使用int数将布尔值转换为一个整数。
例如:

print(int(True))   #显示1
print(int(False))  #显示0

        你也可以用bool函数将一个数字值转换成一个布尔值。如果值为0,这个函数返回False;否则,这个函数总是返回True。
例如:

print(bool(0))  #显示False
print(boo1(4))  #显示True。

三、产生随机数

关键点:函数randint (a, b)可以用来产生一个a和b之间且包括a和b的随机整数。

        设想你要开发一个帮助一年级学生练习加法的程序。这个程序会随机产生两个一位整数: number1和number2,然后显示给学生一个问题: What is 1+7( 1+7=? ),如下面程序清单所示。在学生输入答案后,程序会显示一条消息表明答案是对还是错。

        你可以使用函数random模块中的randint (a,b)函数产生一个随机数字。这个函数返回一个在a和b之间包括a和b的随机整数i。使用randint(0,9)获取一个在0到9之间的随机整数。

        这个程序会按照如下步骤工作。

  • 第1步:产生两个一位整数number1 (例如,4)和number2 (例如,5 )。
  • 第2步:提示学生回答What is 4+5。
  • 第3步:检测学生的答案是否正确。
import random

number1 = random.randint(0,9)
number2 = random.randint(0,9)

answer = eval(input("What is " + str(number1) +"+"+ str(number2) + "? "))

print (number1, "+" , number2, "=" , answer , "is",  number1 + number2 == answer)

        程序使用random模块中定义的randint函数。import 语句会导人这个模块(第1行)。

        也可以使用random( )函数生成一个满足条件0<=r<=1.0的随机浮点数r。

注意:调用random. random( ) 返回一个0.0到1.0之间(不包括1.0)的随机浮点数。调用函数random.randint(0,1)返回0或1。调用random.randrange(0,1) 总是返回0。

四、if 语句

关键点:如果条件正确就执行一个单向if语句。

        前面的程序显示一条像“6+2=7 is false”这样的信息。如果你想将信息改成“6+2=7 is incorrect”,你必须使用选择语句来做这种微小改变。

        Python有多种选择语句类型:单向if语句、双向if-else语句、嵌套if语句,多向if-elif-else语句以及条件表达式。这节介绍单向if语句。

当且仅当条件为true时,一条单向if语句执行一个动作。单向if语句的语法如下:

if boolean-expression:
    statement(s) # Note that the statement(s) must be indented

        这里statement(s)必须相对于if向右至少缩进一个空白,而每条语句也必须使用同样个数的缩进。为了保持一致性。

        如果布尔表达式计算的结果为真,那么就会执行if块中的语句。if块里的语句都要在if语句之后缩进。例如:
 

if radius >= 0:
    area = radius * radius * math. pi
    print("The area for the circle of radius", radius, "is",area)

        在if块中的语句必须在if行后的一.行进行缩进,而且要以相同的空白缩进(即上述代码的第2行和第3行缩进要相同)。

五、双向 if-else 语句

关键点:双向if-else语句根据条件是真还是假来决定执行哪些语句。

        如果指定条件是True,那么一条单向if语句会完成一个动作。如果条件是False,那它什么都不做。但是当条件为False时,你想要完成一个或多个动作时应该怎么办?你可以使用一个双向if-else语句。双向if-else语句根据条件是True还是False指定不同的动作。

        下面是一个双向if-else 语句的句法:

if boolean-expression:
    statement(s)-for-the-true-case
else:
    statement(s)-for-the-false-case

六、嵌套 if和多向if-elif-else语句

关键点:将一个if语句放在另一个if语句中就形成了一个嵌套if语句。

if或if-else语句中的语句可以是任意一个合法的Python语句,甚至可以包括另一个if或if-else语句。内部if语句被称为嵌套在外部if语句中。内部if语句也可以包含另一个if语句;事实上,嵌套的深度是没有限制的。例如,下面的语句是一个嵌套if语句:

if i>k:
    if j>k:
        print("i and j are greater than k" )
    else:
        print("i is less than or equal to k")

        if j>k语句是嵌套在if i>k语句中的。

七、选择语句中常见的错误

关键点:选择语句中的大多数常见错误都是由不正确的缩进问题导致的。

仔细思考a和b中的代码。

        在a中,print语句不在if语块内。要将它放进if块中,你必须像b中那样将print语句缩进,如图b所示。

        考虑下面a和b中代码的另一个例子。a中的代码有两个if子句和一个else子句。哪个if子句是匹配这个else子句的?缩进表明a中else子句匹配第一个if子句而b中else子句匹配第二个if子句。

 因为(i>j) 是false,所以a中的代码显示B,但是b中的语句什么也不显示。

八、逻辑运算符

关键点:逻辑运算符not、 and和or都可以用来创建一个组合条件。

        有时候,几个条件组合在一起决定是否执行一条语句。你可以使用逻辑运算符来组合这些条件形成一个组合表达式。逻辑运算符,也被称为布尔运算符,它是在布尔值上的运算并创建出一个新的布尔值。表4-3罗列出所有的布尔运算符。表4-4定义了not运算符。它对True取反得False,对False取反得True。表4-5定义了and运算符。当且仅当两个操作数都为真时,两个操作数的and操作结果是真。表4-6定义了or运算符。至少有一个操作数为真,两个操作数的or操作结果才为真。

 九、条件表达式

关键点:条件表达式是根据某个条件计算一个表达式。

        你可能想给一个变量赋值,但又受一些条件的限制。例如:下面的语句在x大于0时将1赋值给y,在x小于等于0时将-1赋予y。

ifX>0:
    y=1
else:
    y=-1

        你还可以像下面的例子一样,使用一个条件表达式来获取同样的结果。

y=l if x>0 else -1

        条件表达式完全是另一种不同风格。句法结构如下所示:

expression1 if boolean-expression else expression2

        如果布尔逻辑表达式(boolean-expression)为真,那么这个条件表达式的结果就是expressionl;否则,这个结果就是expression2。

        假设你想将变量numberl和number2中较大的赋值给max。你可以使用下面的条件表达式简单地编写一条语句。

max = number1 if number1 > number2 else number2

        对于另一个例子,如果number是偶数,下 面的语句显示消息“ number is even”,否则,显示“number is odd"。

print("number is even" if number% 2 == 0 else "number is odd")

十、运算符的优先级和结合方向

关键点:运算符的优先级和结合方向决定了运算符的计算顺序。

运算符的优先级和结合方向决定Python运算符的计算顺序。假设你有如下的表达式:

3+4*4>5*(4+3)-1

        它的值是多少?这些运算符的执行顺序又是什么?

        算术上,最先计算括号内的表达式。(括号也可以嵌套,最先执行的是最里面括号中的表达式。)当计算没有括号的表达式时,可以根据优先规则和组合规则使用运算符。

        优先规则定义了运算符的优先性。表4-7包含了你至今已经学习过的所有运算符,以从上到下的顺序罗列出来,其优先级越来越弱。逻辑运算符的优先级低于关系运算符,而关系运算符的优先级小于算术运算符。具有相同的优先级的运算符出现在同一行。

        如果相同优先级的运算符紧连在一起,那它们的结合方向决定了计算顺序。所有的二元运算符(除赋值运算符外)都是从左到右的结合顺序。例如:因为+和-都有相同的优先级,所以表达式:

 

 注意: Python 有自己内部计算表达式的方法,Python计算的结果和它对应的算术计算是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

winform使用IrisSkin4.dll换肤后排除控件

设置控件的tag属性为9999 参考&#xff1a; https://www.cnblogs.com/mq0036/p/6654219.html

YOLOV5改进:加入RCS-OSA模块,提升检测速度

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 2.涨点效果:RCS-OSA模块更加轻量化,有效提升检…

一场大火烧毁了印度的芯片梦 | 百能云芯

谈起印度的半导体发展史&#xff0c;鲜为人知的是&#xff0c;该国曾有可能成为全球半导体制造业的重要中心。然而&#xff0c;一个意外的事件彻底改变了历史进程&#xff0c;让印度错失了超越台积电的机会。 01半导体制造潜力 在高科技行业&#xff0c;也许很多人都不看好印度…

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的&#xff0c;通过添加以下命令行参数&#xff0c;可实现程序的窗口模式运行&#xff1a; -ResX1280 -ResY720 -WINDOWED 发布后的程序&#xff0c;启动时&#xff0c;提示显卡驱动警告&#xff08;如图1所示&#xff09;&#xff0c;但是…

Java-Sec-Code靶场

文章目录 前言1.靶场搭建靶场地址、环境Window环境修改点 靶场通关和源码分析命令注入RCE反序列化fastjson反序列化目录穿越文件上传Spel表达式sql注入poi-ooxml组件XXE 总结 前言 一直都是一个Java盲&#xff0c;但是如今Java却占据了开发的半壁江山&#xff0c;平时遇见的多…

情感分析工具: TextBlob 与 VADER 的对比

一、说明 在本文我们将看到&#xff0c;在情感分析方面&#xff0c;我们更喜欢哪个库。这取决于很多情况。例如。数据采集。在我们进行分析之前&#xff0c;让我们先看看这两个库是关于什么的。 二、亮相工具库 2.1. 工具库TextBlob介绍&#xff1a; 图像。TextBlob: Simplif…

对自定义表格数据设计自定义查询/汇总

目录 1 前言 2 生成数据 3 设计一个汇总 4 试一下效果 5 导出为excel文件的源代码 6 后记 1 前言 对自定义表格中录入或者导入的数据&#xff0c;必须能定义查询和汇总&#xff0c;否则程序基本没什么用。就是说&#xff0c;程序应该具备对任意表格进行方便的查询汇总公式…

VS Code终端系统启动失败的问题

一百度真的是各种各样打不开&#xff0c;有的配置一下就可以了&#xff0c;有的改成管理员权限就可以了&#xff0c;我的是怎么设置都不行&#xff0c;安装了最新版本的不行&#xff0c;又退了几个版本才行了&#xff0c;1.56版本内网行&#xff0c;1.55版本能行&#xff0c;比…

企业权限管理(十五)-方法级别权限控制

方法级别权限控制 jsr-250 3.Secured注解使用 开启表达式的使用 页面控制 显示xxx在线 <div class"pull-left info"><p><security:authentication property"principal.username"></security:authentication></p><a h…

Blazor:子组件deep:: 样式修改无效

文章目录 资料无效代码有效代码 资料 Blazor Css隔离 简单来说&#xff0c;就是外层要加个div&#xff0c;不加div就无法识别。 无效代码 <Layout ShowFooter"true" class"Layout" SideWidth"100px"><Header><div class"t…

C语言刷题训练DAY.3

1.ASCII码 解题思路&#xff1a; 这里直接以字符的形式打印就行&#xff1a; 解题代码&#xff1a; #include<stdio.h> int main() {printf("%c%c%c%c%c%c%c%c%c%c%c%c", 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33);return 0; } 2.出生日期输…

09 - 连续的多个commit整理成1个

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 将连续的多个commit整理成1个 将连续的多个commit整理成1个 将anranxiaohunzhang和xianglongshibazhang合并起来&#xff08;将anranxiaohunzhang合并到降龙十八掌上&#xff0c;生成新…

概要设计完整版word文档,《某信息管理平台总体设计方案》,505页20万字供参考,附下载

上一篇介绍了软件生命周期全过程&#xff0c;软件工程全周期全过程20项文档模板&#xff0c;附下载。从《合同》到《需求规格说明书》到软件设计、开发、实施、验收、维护等全过程相关文档模板。有朋友反馈附件内容没有补全&#xff0c;本次及后续会用实际案例补全附件内容&…

竞赛项目 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

5_docker-compose多服务统一编排管理

系列文章目录 第1章 Linux安装Docker 第2章 Docker安装jdk1.8和MySql 第3章 Docker安装redis 第4章 Jar包部署Docker 第5章 Docker-compose多服务统一编排管理 第6章 AccessKeyId和AccessKeySecret的环境变量配置 文章目录 系列文章目录前言 一、编写docker-compose.yml二、上…

如何控制项目范围?

大家好&#xff0c;我是沐尘而生&#xff0c;今天让我和大家一起走进&#xff0c;产品经理实战百问百答&#xff0c;从问题入手&#xff0c;一步一个脚印&#xff0c;习惯产品经理岗位。如有错误或不当之处&#xff0c;请指正&#xff0c;谢谢&#xff01; 1. 项目范围与项目成…

Ae 效果:CC Cylinder

透视/CC Cylinder Perspective/CC Environment CC Cylinder&#xff08;CC 圆柱体&#xff09;效果可将图层映射到受光照的圆柱体上&#xff0c;支持 Alpha 通道&#xff0c;圆柱体可呈镂空状。 要注意&#xff0c;虽然本效果可生成一个非常生动的 3D 圆柱体外观&#xff0c;但…

PyQt6安装教程

目录 1、安装PyQt6和pyqt6-tools 2、在Pycharm里配置Qt Designer 3、配置Pyuic工具 4、配置Pyrcc工具 5、三个工具的作用 1、安装PyQt6和pyqt6-tools pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install PyQt6-tools -i https://pypi.tuna.tsin…

CloudCompare进行点云数据样本标注

1.下载安装CloudCompare。 2.打开点云数据&#xff0c;鼠标左键用于旋转数据&#xff0c;鼠标右键用于平移数据&#xff0c;滚轮调整数据大小远近。 3.点击选中左侧数据&#xff0c;点击“剪刀”工具。 4.框选目标对象进行裁剪。 5.先后点击“五边形”和“对号”。 6.完成第…

山西电力市场日前价格预测【2023-08-16】

日前价格预测 预测明日&#xff08;2023-08-16&#xff09;山西电力市场全天平均日前电价为363.90元/MWh。其中&#xff0c;最高日前电价为430.17元/MWh&#xff0c;预计出现在19: 30。最低日前电价为318.33元/MWh&#xff0c;预计出现在13: 00。 价差方向预测 1&#xff1a; 实…