《人工智能导论》(python版)第2章 python基础2.2.4条件判断~2.5.3数组的创建与索引

发布于:2025-08-02 ⋅ 阅读:(12) ⋅ 点赞:(0)

书写这篇博客的目的在于实践并记录《人工智能导论》(Pyhton版)微课视频版这本书的内容,便于对人工智能有更深层次的理解。

参考文献:姜春茂.人工智能导论(Python版)微课视频版[M]. 北京:清华大学出版社,2021.

目录

2.2.4 条件判断

2.2.5 循环

1.while循环

2.for循环

3.break语句

4.continue语句

2.2.6 函数的定义与调用

2.3 第三方模块的安装与使用--省略

2.4 文件读写--省略

2.5 NumPy的使用

2.5.1 NumPy简介、下载与安装--省略

2.5.2 数据类型--省略

2.5.3 数组的创建与索引


2.2.4 条件判断

Python中有3个条件判断语句,分别是:if、elifi和else,其中elif是else if的缩写,基本形式如下:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

例如,通过条件判断语句来判别学生成绩的等级

其中,需要先将输入的成绩转换成int型,否则无法与0和100进行比较。如果一个判断语句为True,其他的判断语句就不需要再进行了。而例子输入的89是一直执行到最后一个判断语句才为真

另外,Python中条件选择语句的判断后面有一个冒号

score = int(input("你的成绩:"))
if score < 0 or score > 100:
    print("重新输入")
elif score < 60:
    print("不及格")
elif score < 85:
    print("中等")
else:
    print("优秀")

2.2.5 循环

Python中有2个循环方式,分别是:while和for,没有do…while循环。二者的区别是:while会先判断是否满足条件,而for必须要有一个可迭代的对象。

循环中比较重要的三个关键字:

  1. continue:跳出本次循环,重新执行下一次循环
  2. break:停止整个循环,跳出循环
  3. pass:空语句,保持结构完整性
1.while循环

用法:

while 条件:
        <执行语句>
2.for循环

用法:

for iter_var in iterable:
    statement(s)

其中,iterable必须是可迭代对象,可以是列表、元组、字符串和字典,当iterable中所有项都被访问后,就会退出循环。

现在来看看同时用上述两种循环方式来计算1~10的和

先来思考一下,首先需要两个变量来分别承载数字(count)与和(sum),然后让sum加上count,注意这里需要让count的值+1,如果count的值一直为0循环就永远不会结束,一直加到10,就完成了求和的过程

因此,while循环可以写为

count = 0
sum = 0
while count < 11:
    sum = sum + count
    count = count + 1
print(sum)

for循环就可以写为:

sum = 0
for count in range(11):
    sum = sum + count

print("for循环的结果为:{}".format(sum))

range(n)函数的意思是会返回一个[0,1,2,...,n-1]的列表,那么range(11)则正好是[0,1,2,...,10],有0也没有影响,因为+0还是0,因此range(11)就构成了从1到10的列表

在输出结果时,博主用了format()函数将sum转化成字符串,因为在python中字符串与整型不能拼接

当range()函数有三个参数时,range(x,y,z),其中z表示步长

print(list(range(10)))
print(list(range(2, 9, 3)))
print(list(range(1, 10, 3)))
print(list(range(0)))

可以看到,拥有步长参数时,是间隔步长大小再次取值,其中步长大小包括起始值

而range(0),左右区间都是0,又因为左闭右开,所以就是空列表

再来看看for如何遍历元组和字典,其实与遍历列表类似

for循环遍历元组

tup1 = ('a', 'b', 'c', 'd')
for i in tup1:
    print("现在的字母是:", i)

在这里i代表字符,所以可以直接拼接,print函数中的逗号换成加号也是可以的

for循环遍历字典

这里用到了字典中的items()函数,来获取字典中的键值对

dict1 = {'Name': 'KangKang', 'Age': 20, 'height': 186, 'weight': 70}
for key, value in dict1.items():
    print(key, value)

接下来看一道练习题,计算列表元素的总和及平均值

这道题和刚才求1~10的总和类似,只不过多了个求平均值的过程,只需要通过总和除以列表元素总个数即可

如果要通过for循环来获得元素个数,那么执行一次循环,元素个数就应该加一

list1 = [1, 2, 3, 4, 5, 6]
count = 0
sum = 0
for i in list1:
    sum = sum + i
    count = count + 1
print("列表的总和为:", sum)
print("列表的平均值为:", sum/count)

在这里博主发现,print()函数中使用加号不能实现字符串和数值型的拼接,但是用逗号可以,那以后就都用逗号吧~

3.break语句

下面来介绍循环中比较重要的关键字,break是当循环执行到它时,直接跳出循环,不再执行循环,下面来看一个例子:

for i in 'Hi World':
    if i == 'r':
        break
    print(i)

可以看到,这段是为了遍历'Hi World'字符串,并且在遍历到r的时候跳出循环,因此当i为r时,跳出循环就不会打印r,因为print()函数在for循环中

同样的问题,再看看continue会输出什么结果

4.continue语句
for i in 'Hi World':
    if i == 'r':
        continue
    print(i)

显然,只有在遍历到r时才会跳出当前轮次的循环,接下来的循环继续进行

2.2.6 函数的定义与调用

函数是组织好的可以重复使用的一段代码段,提高了应用的模块性,减少代码冗余,Python有许多内建函数,也可以自己创建函数

自定义函数需要遵循以下规则:

  • 用def关键字定义函数,后接函数名称;
  • 括号里可以用于定义参数;
  • 定义函数的语句末尾必须有冒号,并且函数内部语句有缩进;
  • 函数必须要先定义,后调用;
  • return表示结束函数并返回一个值给调用方,如果函数体内没有return,则相当于返回一个None

函数定义语法:

def functionname(parameters):
    function_suite
    return [expression]

函数的参数分为形参和实参,其中形参没有实际值,需要赋值才有意义;实参则是一个真实存在的值

下面来看一下,如何定义加法函数来进行加法运算

只需要掌握函数其中的逻辑,就能轻松定义函数

def num_add(x, y):
    sum = x + y
    return sum
sum1 = num_add(2, 4)
sum2 = num_add(78, 90)
print(sum1)
print(sum2)

2.3 第三方模块的安装与使用--省略

模块的好处是用户可以使用前人或自己写好的代码,安装后即可使用方便快捷。如何安装模块不赘述了,网上有很多教程可以参考

2.4 文件读写--省略

文件读写较为简单,看教材即可学会,省略

2.5 NumPy的使用

2.5.1 NumPy简介、下载与安装--省略

函数是组织好的可以重复使用的一段代码段,提高了应用的模块性,减少代码冗余,Python有许多内建函数,也可以自己创建函数NumPy是Python语言的一个扩展程序库,支持大量维度数组与矩阵运算,一般与SciPy、Matplotlib一起使用。NumPy可以执行数组的算数和逻辑运算、傅里叶变换、图形操作、生成线性代数和随机数等相关操作。

由于博主的电脑已经安装了NumPy,在这里就不进行安装了。

2.5.2 数据类型--省略

很多,网上轻松找到,不列举了

2.5.3 数组的创建与索引

NumPy中的多维数组称为ndarray,由两部分组成:数据本身和描述数据的元数据。NumPy数组通常由相同种类的元素组成,即数组中数据类型必须一致,这样可以轻松确定存储数组所需的空间。

numpy.empty()方法可以创建一个指定形状、数据类型且为初始化的数组,语法为:

numpy.empty(shape,dtype,order)

参数说明:

参数

说明
shape 数组形状
dtype 数据类型,可自行选择
order 表示计算机内存中存储元素的顺序,包括C与F两个选项,分别表示行优先和列优先

现在来创建一个两行四列的数组,其中as是别名,也就是程序中的np都是numpy,[2,4]代表数组形状为2行4列的数组,其元素为随机生成

import numpy as np
x = np.empty([2, 4], dtype=int)
print(x)

而zero()则是让数组以0填充,ones()则是让数组以1填充

x = np.zeros([2, 2], dtype=int)
print(x)

x = np.ones([2, 2], dtype=int)
print(x)

如果想将列表、元组、列表的元组等形状转换为多维数组(ndarray),可以采用asarray(),语法为:

numpy.asarray(a, dtype, order)

将列表、元组转换为ndarray:

博主在第20行将dtype设为了object,否则会提示错误,因为z列表中的元组的元素个数不一致

x = [1, 2, 3]
y = (4, 5, 6)
z = [((1, 2, 3), (4, 5))]
a1 = np.asarray(x, dtype= float)
a2 = np.asarray(y)
a3 = np.asarray(z, dtype=object)
print(a1, '\n', a2, '\n', a3)


网站公告

今日签到

点亮在社区的每一天
去签到