Python入门教程(三)

2023-10-29

一、条件控制

Python条件语句是通过一条或多条语句的执行结果(true或者false)来决定执行的代码块。

1、if语句

Python中if语句格式为:

if condition1: #为true时将执行statement的语句,如果condition1为false则将判断condition2

        statement1

elif condition2: #如果condition2为true将执行statement2语句,如果condition2为false则执行statement3语句。

        statement2

else:

statement3

注意:

1、Python中的elif是代替了else if,所以if关键字为:if-elif-else

2、每个条件后面都要使用冒号,表示接下来要满足条件后的语句。

3、Python中没有switch-case语句。

以下是一个简单的if-else语句。定义一个变量a=1。如果a小于9则进入if语句。如果a除以2取余为0则输出nice,否则输出bad:

a=1
while a<9:
    if(a % 2 ==0):
        print(a,'nice')
    else:
        print(a,'bad')
    a+=1
#输出结果
1 bad
2 nice
3 bad
4 nice
5 bad
6 nice
7 bad
8 nice

 下面我们进行一个复杂的例子。计算狗的年龄。

age=int(input("请输入你家狗狗的年龄:"))
if age<=0:
    print("你在逗我玩呢?")
elif age==1:
    print("相当于14岁的人")
elif age==2:
    print("相当于22岁的人")
elif age>2:
    human=22+(age-2)*5
    print("对应人类的年龄为:",human)
#输出结果
请输入你家狗狗的年龄:3
对应人类的年龄为: 27

下面实例演示一个数字猜谜游戏。

number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
    guess = int(input("请输入你猜的数字:"))
 
    if guess == number:
        print("恭喜,你猜对了!")
    elif guess < number:
        print("猜的数字小了...")
    elif guess > number:
        print("猜的数字大了...")
#输出结果
数字猜谜游戏!
请输入你猜的数字:9
猜的数字大了...
请输入你猜的数字:1
猜的数字小了...
请输入你猜的数字:6
猜的数字小了...
请输入你猜的数字:8
猜的数字大了...
请输入你猜的数字:7
恭喜,你猜对了!

2、if嵌套

在嵌套if语句中可以把if语句放在另一个if语句中。格式为:

if condition1:

        statement1

        if condition2:

                  statement2

        elif condition3:

                statement3

        else:

                statement

elif condition4:

        statement4

else:

        statement

以下是一个简单的例子:

number=int(input("输入一个数字:"))
if number % 2 ==0:
    if number % 3 ==0:
        print("你输入的数字可以整除2和3")
    else:
        print("你输入的数字可以被2整除,但不能整除3")
else:
    if number %3 ==0:
        print("你输入的数字能被3整除,但不能被2整除")
    else:
        print("你数入的数字不能被2和3整除")
#输出结果
输入一个数字:30
你输入的数字可以整除2和3

二、循环语句

Python中的循环语句有for和while。

1、while循环

while语句的格式为:

while condition:

        statement

下面我们来做一个简单的例子:

a=0
while a<10:
    print(a)
    a+=1
#输出结果
0
1
2
3
4
5
6
7
8
9

下面我们来做一个复杂的例子,计算1到100的和:

start=1
end=100
sum=0
while start<=end:
    sum=sum+start
    start+=1
print("1到100的总和为:",sum)
#输出结果
1到100的总和为: 5050

2、无限循环

无限循环就是我们设置的条件永不为false,我们通过实例来练习以下吧~

a=5
while a==5:
    number=int(input("请输入一个数字:"))
    print("你输入的数字为:",number)
print("good bye!")
#输出结果
请输入一个数字:2
你输入的数字为: 2
请输入一个数字:8
你输入的数字为: 8
请输入一个数字:78
你输入的数字为: 78
请输入一个数字:5
你输入的数字为: 5
请输入一个数字:

从例子中可以看到运行之后的结果一直循环。如果想退出无限循环可以使用Ctrl+C退出。

3、while循环使用else语句

语法格式为:

while condition:

        statement1

else:

        statement2

下面我们来做一个简单的例子:

a=4
while a<8:
    print(a,"<8")
    a+=1
else:
    print(a,">=8")
#输出结果
4 <8
5 <8
6 <8
7 <8
8 >=8

4、for语句

for variable in condition

        statement1

else:

        statement2

a=["hello","nice","random","python"]
for x in a:
    print(x)
#输出结果
hello
nice
random
python

以下for循环用到了break语句,break语句用于跳出当前循环体。

a=["hello","nice","random","python"]
for x in a:
    if x=="random":
        print("RA")
        break
    print(x)
print("完成循环!")
#输出结果
hello
nice
RA
完成循环!

5、range函数

range函数用于遍历数字序列,它会生成数列。

for x in range(5):
    print(x)
#输出结果
0
1
2
3
4

当然可以使range指定数字开始并指定不同的增量。如:

for x in range(0,20,4):  #0为指定开始数字,20为最大值,4为增量
    print(x)
#输出结果
0
4
8
12
16

结合range()函数于len()来遍历一个序列:

a=["hello","nice","random","python"]
for x in range(len(a)):
    print(x,a[x])
#输出结果
0 hello
1 nice
2 random
3 python

6、break和continue语句及循环中的else字句

  • break语句可以跳出for和while的循环体,如果从循环中终止,任何对应的循环else将不执行。
  • continue语句用来告诉Python跳过当前循环中剩余的语句,然后继续下一轮的循环。

以下为break语句练习:

for x in "python":
    if x=="h":
        break
    print(x)

a=10
while a>0:
    a-=1
    if a==4:
        break
    print(a)
#输出结果
p
y
t
9
8
7
6
5

以下为continue语句练习:

for x in "python":
    if x=="h":
        continue
    print(x)

a=10
while a>0:
    a-=1
    if a==5:
        continue
    print(a)
#输出结果
p
y
t
o
n
9
8
7
6
4
3
2
1
0

三、迭代器和生成器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问玩结束,而且只往前不会后退。

迭代器有二个基本的方法:iter()和next()。字符串、列表、元祖都可用于创建迭代器。如:

list=[1,2,3,4]
a=iter(list)#创建迭代器对象
print(next(a))#输出迭代器的下一个元素
print(next(a))
#输出结果
1
2

上面的例子大家是不是已经发现输出很笨拙,我们可以使用for语句来进行简单的迭代:

list=[1,2,3,4]
a=iter(list)#创建迭代器对象
for x in a:
    print(x)
#输出结果
1
2
3
4

1、创建一个迭代器

把一个类作为迭代器使用需要在类中实现二个方法:__iter__()和__next__()

  • __iter__()方法返回一个特殊的迭代器对象,这个迭代器对象实现了__next__()方法并通过StopIteration异常标识迭代完成
  • __next__()方法会返回下一个迭代器对象。

以下我们来做一些例子来增加印象吧,创建一个返回数字的迭代器,初始值为1,逐步递增1:

class number:
    def __iter__(self):
        self.a=1
        return self
    def __next__(self):
        x=self.a
        self.a+=1
        return x
myclass=number()
myiter=iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
#输出结果
1
2
3
4

2、StopIteration

StopIteration异常用于标识迭代的完成,防止出现无限循环的情况。

以下例子为在20此迭代后停止执行:

class number:
    def __iter__(self):
        self.a=1
        return self
    def __next__(self):
        if self.a<5:
            x=self.a
            self.a+=1
            return x
        else:
            raise StopIteration
myclass=number()
myiter=iter(myclass)
for x in myiter:
    print(x)
#输出结果
1
2
3
4

3、生成器

在Python中,使用yield的函数被称为生成器。生成器是一个返回迭代操作,简单理解就是生成器就是一个迭代器。

调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值并在下一次执行next()方法时从当前位置继续运行。

以下实例使用yield实现悲波那契数列:

def fibonacci(n):
    a,b,counter=0,1,0
    while True:
        if(counter>n):
            return
        yield a
        a,b=b,a+b
        counter+=1
f=fibonacci(10)
while True:
    try:
        print(next(f),end=" ")
    except StopIteration:
        sys.exit()
#输出结果
0 1 1 2 3 5 8 13 21 34 55 

四、函数

1、定义一个函数

  • 函数代码块以def关键字,后面接标识符名称和()
  • 参数和自变量放在()里面,括号里面用于定义参数
  • return表达式结束函数,选择性返回一个值调用,如果不写入return表达式相当于返回none。

def max(a,b): #a,b为函数参数,使用def关键字定义函数

        if a>b:#以下为函数体

                return a #return关键字设置返回值

        else:

                return b

以下我们来进行一个简单的实例,比较二个数并返回最大值:

a=15
b=4
def max(a,b):
    if a>b:
        return a
    else:
        return b
print(max(a,b))
#输出结果
15

 下面来做一个简单的面积计算:

width=5
height=8
def area(width,height):
    return width*height
print("width=",width,"height=",height,"area=",area(width,height))
#输出结果
width= 5 height= 8 area= 40

2、函数调用

在上面我们学会了如何定义一个函数,定义完一个函数后我们可以通过另一个函数调用执行,也可以直接用Python命令符执行。

下面进行调用myhs函数调用:

def myhs(str):
    print(str)
    return
print(myhs("调用自定义的函数"))
print(myhs("再次调用同一函数"))
#输出结果
调用自定义的函数
None
再次调用同一函数
None

3、Python不可变对象

在Python中string、tuples、number是不可变对象,list、dictionary是可变对象。

  • 不可变对象:当变量赋值a=4后想在次赋值为a=8,实际是新生成一个int值为8的对象,而4被丢弃。
  • 可变对象:变量赋值list=[1,2,3]后想再次赋值list[0]=5,实际是将list的第一个元素值更改。

下面我们来进行实际操作:

a=4
def myhs(a):
    print(id(a))
    a=8
    print(id(a))
a=1
print(id(a))
print(myhs(a))
#输出结果
140737390712480
140737390712480
140737390712704

4、可变对象

可变对象在函数里修改的参数,那么原始的参数也被改变了,如:

list=[1,2,3]
def mylist(list):
    print(list)
    return
list[0]=10
mylist(list)
print(list)
#输出结果
[10, 2, 3]
[10, 2, 3]

5、return语句

return表达式用于退出函数,选择性的调用返回一个表达式。不带参数的return语句返回none。

def myhs(a,b):
    total=a+b
    print(total)
    return total
total=myhs(5,4)
print(total)
#输出结果
9
9

五、数据结构

1、列表

在上一章节中我们提到在Python中列表是可变的,而元祖是不可变的。

Python中列表的方法:

  • list.append(x):把元素添加到列表结尾
  • list.insert(i,x):把指定位置插入到元素中。i为准备插入到其前面的那个元素。
  • list.remove(x):删除列表中x值
  • list.clear(x):移除列表中的所有项。

还有很多列表的方法在这里就不过多解释,大家可以在网上搜索更多信息。

2、将列表当做栈使用

列表方法使得列表可以方便在作为一个栈使用,栈作为特定的数据结构,最先进入的元素被最后一个释放(先进后出,后进先出)。可以用append()方法把一个元素添加到栈。如:

a=[1,2,3]
a.append(4)
a.append(5)
print(a)
#输出结果
[1, 2, 3, 4, 5]

3、把列表当做队列使用

可以吧列表当做队列使用,只是在队列里第一加入的元素,第一个取出来。但是列表这样的目的效率不高。可以在列表最后添加或者弹出元素速度块,但在列表里插入或者从头部弹出速度不快。

from collections import deque
a=deque(["random","nice","john"])
a.append("applle")
print(a.popleft()) #输出第一个元素
print(a.popleft()) #输出第二个元素
print(a) #输出剩余的元素
#输出结果
random
nice
deque(['john', 'applle'])

4、列表推导式

列表推导式从序列创建列表的简单途径。每个列表推导式在for后跟一个表达式,就会有多个for或者if字句。返回结果是根据表达从其后的for和if上下文环境中生成出来的列表。

#实例1:
a=[2,5,8]
print([3*x for x in a])#计算每个数乘以3的值

#实例2:
print([[x,x**2] for x in a])#计算平方的值
#输出结果
[6, 15, 24]
[[2, 4], [5, 25], [8, 64]]

下面我们用if字句来添加条件:

a = [2, 5, 8]
print([3*x for x in a if x>3])

print([[x,x**2] for x in a if x>3])
#输出结果:
[15, 24]
[[5, 25], [8, 64]]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python入门教程(三) 的相关文章

  • 视觉目标检测和识别之过去,现在及可能(2017.06.28)

    计算机视觉中目标检测 跟踪 识别是最基本的几个task 尤其又以检测最为重要和基础 同时基本上所有的检测任务都需要在给出物体的bounding box之后 给出物体的类别 也就是给识别物体 所以文章中不区分检测和识别任务 笔者从事计算机视觉
  • JDBC三步连接MySql

    一 导入依赖文件 编写配置文件 在依赖文件中添加JDBC的依赖文件 如果是Maven项目也可以在Pom xml中导入依赖 文件下载 https pan baidu com s 1ktMMhzG8cHKOa 2VpcqvrQ pwd 882i
  • Ansible-playbook-roles安装lnmp

    使用roles安装lnmp nginx 1 准备四台主机 192 168 142 10 192 168 142 20 192 168 142 30 192 168 142 40 2 10作为ansible管理端 首先ssh连接剩下三台主机

随机推荐

  • SQLServer复习笔记

    目录 第一章 关系数据库基础 第二章 SQLServer基础 第三章 数据库创建与管理 第四章 SQL基础 第五章 架构与基本表 第六章 数据操作语言 第七章 高级查询 第八章 索引 第九章 视图 补充 第一章 关系数据库基础 基本概念 数
  • javascript判断对象有没有某个属性

    定义一个动物类 function Animal name 属性 this name name Animal 实例方法 this sleep function console log this name 正在睡觉 Animal prototy
  • Apache Beam开发指南

    本指南用于指导Beam用户使用Beam SDK创建数据处理pipeline pipeline 本文会引导您用BeamSDK类构建和测试你的pipeline 本文不会详尽阐述所有内容 但可以看做一门未知的 编程语言 引导您用编程的方式构建您的
  • JDBC连接oracle RAC数据库配置

    RAC的配置如下 node1 ip地址192 168 60 132 实例名 rac1 主机名 rac1 node2 ip地址192 168 60 144 实例名 rac2 主机名 rac2 RAC服务名为oratest 我的应用服务器为ap
  • Json串的单引号和双引号问题

    今天遇到双引号和单引号的问题 json就是一段有格式的字符串 如果数据的封装与解析都是我们自己做的时候 单引号和双引号是没啥关系的 但是如果用到一些别的json相关的库的时候 或者像笔者这样是发给别人用的时候 这个就特别需要注意了 所以应该
  • 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话 可以先阅读此篇文章 在这篇文章中 我大概介绍了一下构建淘宝购物车页面需要的基础知识 这篇文章主要探讨的是智能搜索框Ajax异步加载数据 jQuery的社区非常的活跃 许多朋友都在不同地方分享了很多
  • Java实现利用正则表达式校验手机号码,邮箱,电话号码

    需求 校验手机号码 邮箱 电话号码 实现代码 package apilambda d6 regex import java util Scanner public class RegexTest2 public static void ma
  • Linux使用gpu渲染桌面,WSL将支持GPU计算,并可运行Linux GUI应用

    原标题 WSL将支持GPU计算 并可运行Linux GUI应用 在刚刚召开的微软 Build 2020 大会上 传来不少有关 WSL 的新消息 这篇文章将一并整理 逐一介绍 其中 本月就可实现的包括以下这两项 随着 2020 年 5 月更新
  • python 爬虫 POST请求

    import requests 导入网络请求模块requests import json 导入json模块 字典类型的表单参数 data 1 能力是有限的 而努力是无限的 2 星光不问赶路人 时光不负有心人 发送网络请求 response
  • Spring Boot 集成 Redis

    Spring data redis 在 Spring 中整合 Redis jedis 采用的直连 多个线程操作的话 是不安全的 如果想要避免不安全的 使用 jedis pool 连接池 lettuce 采用netty 实例可以再多个线程中进
  • js基础一(补充)

    1 js概述 1 历史 1995年 js最早由Netscape的浏览器中出现 1996年 IE3中也出现了js 也称为JScript 1997年 ECMA组织制定了标准规范ECMAScript 2009年 JS遵循了CommonJS规范 开
  • Python:多路分支判断程序 输出成绩等级

    今天学习到了Python的if判断语句 根据输入的成绩 输出评定成绩 程序如下 score input 请输入成绩 手动输入成绩 score int score 将输入的字符串转换为数值 if score gt 90 and score l
  • 如何解压缩后缀名为zip.001,zip.002等的文件

    今天下了个PDF压缩包 发现不会解压 有如下几种方法 1 使用命令 打开dos界面 将文件目录切换至当前目录 假设文件名分别为 文件 01 zip 001 文件 01 zip 002 文件 01 zip 003 则在dos界面输入如下命令
  • Eclipse下编写C++

    Eclipse下运行C 程序 文章目录 Eclipse下运行C 程序 装CDT插件 测试运行C 程序 附加说明 众所周知Eclipse是常用于编写java的集成开发工具 但是像CodeBlocks和Dev C 这类集成开发工具就只能编写C或
  • SpringFramework核心技术一(IOC:注册一个LoadTimeWeaver)

    一 什么是LoadTimeWeaver 在LoadTimeWeaver用于由Spring动态变换的类 因为它们被装载到Java虚拟机 JVM 要启用加载时织入 请将其添加 EnableLoadTimeWeaving到您的某个 Configu
  • ansible主机连通性测试报错

    报错提示 root yx01 site packages ansible all m ping WARNING provided hosts list is empty only localhost is available Note th
  • linux下boost裁剪笔记

    目录 1 裁剪流程 2 操作过程详解 3 裁剪boost库 4 备注 boost中所有库目录 最近在开发c 项目 遇到大量使用正则表达式 由于windows上使用vs2022 工具集版本比较高对c 11属性支持的比较好 没遇到什么问题 但是
  • 8051单片机实战分析(以STC89C52RC为例)

    在第一篇到第九篇博文中 我们认识到了一些基于IO口输入与输出的基础电子器件使用 8051单片机实战分析 以STC89C52RC为例 01 点亮一个LED 8051单片机实战分析 以STC89C52RC为例 02 LED延时约5s闪烁 805
  • pinia 介绍与安装

    目录 一 什么是pinia 二 为什么要使用pinia 三 准备工作 1 基于Vue3 TS Vite创建项目 2 安装pinia 四 搭建pinia模块 1 在src下创建store目录 并创建index ts文件 2 挂载pinia 一
  • Python入门教程(三)

    一 条件控制 Python条件语句是通过一条或多条语句的执行结果 true或者false 来决定执行的代码块 1 if语句 Python中if语句格式为 if condition1 为true时将执行statement的语句 如果condi