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

Python语言基础知识(二)

文章目录

    • 1、条件表达式
    • 2、分支结构—常见的分支结构
      • 2.1、分支结构—单分支选择结构
      • 2.2、分支结构—双分支选择结构
      • 2.3、分支结构—多分支选择结构
      • 2.4、分支结构—选择结构的嵌套
    • 3、循环结构
      • 3.1、循环结构— for循环与while循环

1、条件表达式

在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价
(1)关系运算符
Python中的关系运算符可以连续使用,这样不仅可以减少代码量,也比较符合人类的思维方式。

>>> print(1<2<3)                 #等价于1<2 and 2<3
True
>>> print(1<2>3)
False
>>> print(1<3>2)
True

在Python语法中,条件表达式中不允许使用赋值运算符“=”,避免了误将关系运算符“==”写作赋值运算符“=”带来的麻烦。在条件表达式中使用赋值运算符“=”将抛出异常,提示语法错误

>>> if a=3:                       #条件表达式中不允许使用赋值运算符
SyntaxError: invalid syntax
>>> if (a=3) and (b=4):	
SyntaxError: invalid syntax

(2)逻辑运算符
逻辑运算符and和or具有短路求值或惰性求值的特点,可能不会对所有表达式进行求值,而是只计算必须计算的表达式的值。 and和or不一定返回布尔数

以“and”为例,对于表达式“表达式1 and 表达式2”而言,如果“表达式1”的值为“False”或其他等价值时,不论“表达式2”的值是什么,整个表达式的值都是“False”,丝毫不受“表达式2”的影响,因此“表达式2”不会被计算。

在设计包含多个条件的条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据“and”和“or”运算符的短路求值特性来组织顺序,可以大幅度提高程序运行效率。

>>> 3 and 5
5
>>> 3 or 5
3
>>> 0 and 5
0
>>> 0 or 5
5
>>> not 3
False
>>> not 0
True

2、分支结构—常见的分支结构

  • 单分支选择结构
  • 双分支选择结构
  • 多分支选择结构
  • 嵌套的分支结构

2.1、分支结构—单分支选择结构

if 表达式:
    语句块






x = input('Input two number:')
a, b = map(int, x.split())
if a > b:
   a, b = b, a    #序列解包,交换两个变量的值
print(a, b)

在这里插入图片描述

2.2、分支结构—双分支选择结构

if 表达式:
    语句块1
else:
    语句块2


ls= ['1', '2', '3', '4', '5']
if ls:
	  print(ls)
else:
	  print('Empty')

在这里插入图片描述
鸡兔同笼。

#笼中有若干只鸡和兔,它们共有50个头和140只脚,问鸡兔各有多少只? 
#脚数和÷2-头数和=兔子数
x, y = map(int, input('请输入鸡兔总数和腿总数:').split())
rabbit = y/2 - x
if int(rabbit) == rabbit:
    print('鸡:{0},兔:{1}'.format(int(x-rabbit), int(rabbit)))
else:
    print('数据不正确,无解')

Python还提供了一个三元运算符,并且在三元运算符构成的表达式中还可以嵌套三元运算符,可以实现与选择结构相似的效果。语法为
value1 if condition else value2

当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。

>>> b = 6 if 5>13 else 9         #赋值运算符优先级非常低
>>> b
9

2.3、分支结构—多分支选择结构

if 表达式1:
    语句块1
elif 表达式2:
    语句块2
elif 表达式3:
    语句块3
else:
    语句块4


其中,关键字elifelse if的缩写。

问题解决:使用多分支选择结构将成绩从百分制变换到等级制。

def func(score):
    if score > 100 or score < 0:
        return 'wrong score.must between 0 and 100.'
    elif score >= 90:
        return 'A'
    elif score >= 80:
        return 'B'
    elif score >= 70:
        return 'C'
    elif score >= 60:
        return 'D'
    else:
        return 'E'	

2.4、分支结构—选择结构的嵌套

if 表达式1:
    语句块1
    if 表达式2:
        语句块2
    else:
        语句块3
else:
    if 表达式4:
        语句块4

注意:缩进必须要正确并且一致。

在这里插入图片描述
问题解决:使用嵌套选择结构将成绩从百分制变换到等级制

def func(score):
    degree = 'DCBAAE'
    if score > 100 or score < 0:
        return 'wrong score.must between 0 and 100.'
    else:
        index = (score - 60) // 10
        if index >= 0:
            return degree[index]
        else:
            return degree[-1]

3、循环结构

Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套使用,并且还经常和选择结构嵌套使用来实现复杂的业务逻辑。

while循环一般用于循环次数难以提前确定的情况,当然也可以用于循环次数确定的情况;

for循环一般用于循环次数可以提前确定的情况,尤其适用于枚举或遍历序列或迭代对象中元素的场合。

3.1、循环结构— for循环与while循环

两种循环结构的完整语法形式分别为:

while 条件表达式:
    循环体
[else:
    else子句代码块]for 取值 in 序列或迭代对象:
    循环体
[else:
    else子句代码块]

对于带有else子句的循环结构,如果循环因为条件表达式不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语句而导致循环提前结束则不会执行else中的语句

for letter in 'Python':     # 第一个实例
   print ('当前字母 :', letter)
====================================== 
fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # 第二个实例
   print ('当前水果 :', fruit)
====================================== 
a_list = ['a', 'b', 'mpilgrim', 'z', 'example']
for i, v in enumerate(a_list):
    print('列表的第', i+1, '个元素是:', v)

问题解决:输出1~100之间能被7整除但不能同时被5整除的所有整数。

for i in range(1, 101):
    if i%7==0 and i%5!=0:
        print(i)
==============================
i=1
while i<=100:
    if i%7==0 and i%5!=0:
        print(i)
    i+=1
===============================
x=[i for i in range(1,101) if i%7==0 and i%5!=0] //列表推导式
x=(i for i in range(1,101) if i%7==0 and i%5!=0) //生成器推导式
x=filter(lambda i:i%7==0 and i%5!=0,range(1,101)) //filter函数

一旦break语句被执行,将使得break语句所属层次的循环提前结束;
continue语句的作用是提前结束本次循环,忽略continue之后的所有语句,提前进入下一次循环。


http://www.kler.cn/a/162655.html

相关文章:

  • 蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
  • node.js安装和配置教程
  • Linux手动安装nginx
  • 稀疏视角CBCT重建的几何感知衰减学习|文献速递-基于深度学习的病灶分割与数据超分辨率
  • 从0开始学docker (每日更新 24-11-7)
  • old-cms(原生PHP开发的企业网站管理系统)
  • 【S32DS报错】-2-提示Error while launching command:arm-none-eabi-gdb –version错误
  • DeepIn,UOS统信专业版安装运行Java,JavaFx程序
  • LeetCode-496. 下一个更大元素 I【栈 数组 哈希表 单调栈】
  • pip的常用命令
  • 获取系统固件类型和Windows固件API学习
  • 行云海CMS SQL注入漏洞复现
  • GO -- 设计模式
  • 如何使用技术 SEO 优化 Pinterest 富图钉
  • JVM虚拟机:如何查看JVM初始和最终的参数?
  • 管理类联考——数学——真题篇——按题型分类——充分性判断题——秒杀
  • 论文阅读《Learning Adaptive Dense Event Stereo from the Image Domain》
  • Orcal数据库Schema理解、表分区理解
  • 【kubernetes】k3s集群搭建(正在更新……)
  • 利用mybatis-plus查询时报错?
  • 【C语言】操作符详解(一):进制转换,原码,反码,补码
  • golang开发之个微机器人的二次开发
  • 二叉树03-遍历02
  • vuepress-----13、分割config
  • zotero关闭翻译自动创建标签
  • openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式2