【人工智能】python编程实践入门


博客已经有18个月没有更新过了,为了给博客拔拔草,我决定从人工智能实验课的实验报告中摘取部分内容水几篇博文。
我们首先从python入手。

为什么使用python?

简单来说,就是有优越的AI生态。python拥有较多数量的人工智能相关的库,给我们学习人工智能方面的基础知识提供了非常大的帮助。至于所谓的代码可读性更好等等都在其次。

• 数据分析与计算: numpy、 scipy、 pandas
• 机器学习: scikit-learn
• 深度学习: pytorch、 tensorflow、 keras
• 特定应用领域(如文本挖掘): gensim
• …

参考资料与建议阅读

《Python编程:从入门到实践》
《人工智能(第3版) 》 附录A
https://www.runoob.com/python3/python3-tutorial.html

什么是Python

是一种具有优越的AI生态的编程语言,它开发效率高(贴近自然语言,语法结构清晰),但运行效率慢(语句需要实时解释,变量数据类型是动态的)。
(参考:为什么 Python 这么慢?https://zhuanlan.zhihu.com/p/47795989

环境安装(Windows环境下)

首先访问Python官网: https://www.python.org/,下载安装包。
下载完成后,使用安装包进行安装,并在运行时勾选:Add Python to PATH(否则,你需要手动配置环境变量)。
安装完成后,可在命令行下通过python --version验证是否成功安装。

建议安装IDE如Pycharm、VS Code。

从Hello World开始

print("Hello World!")

你只需要这么一条语句。需要注意,在python中,一般一行为一条语句,python不使用分号来分隔语句。
python程序由python解释器运行,我们可以在命令行下直接运行语句或运行.py文件,也可以在ide中运行.py文件。

注释

python中使用#注释单行,三个单/双引号注释多行。

变量

python是动态类型语言,变量不需要声明类型,需要注意:

• 变量名只能包括字母、数字和下划线;
• 变量名不能以数字开头,不能包含空格;
• python关键字和函数名最好不要用作变量名。

简单数据类型

数字
• 包括:整数、浮点数
• 运算:加(+)、减(-)、乘(*)、除(/)、整除(//)、幂(**) …
字符串
• 拼接(+)
• 方法:大小写、删除空白、分割、替换…
类型转换
布尔值、空值

注意: Python中没有类似于“++”的运算符!

控制结构

分支
• if、 if-else、 if-elif-else、 if-elif
循环
• while循环
• 初识for循环与range
条件判断运算符与布尔表达式
• 比较运算符
• 逻辑运算符

复杂数据结构与操作

列表(list)
• 元素的访问、修改、添加和删除
• 列表的操作:长度、翻转、排序、切片与复制
• 列表的遍历(for),数字列表,列表解析
• 使用if语句处理列表
元组(tuple)、集合(set)
字典(dict)
• 访问、修改、添加和删除
• 遍历

函数与类

函数
• 定义函数:语法
• 返回值:允许多个返回值,允许任意类型
• 传递实参:关键字实参,默认值,副作用,传递任意数量的实参
类
• 定义类:构造函数、 self
• 类实例化为对象:创建对象、访问属性、调用方法、修改属性
• 继承

文件与异常

文件处理
• 读取文件:读取整个文件、逐行读取
• 写入文件:写入空文件、追加到文件
• 使用模块json存储数据
异常处理
• try-except
• try-except-else
• pass语句

模块与库

模块导入
编写自己的模块
Python标准库
外部模块

一些简单的练习题

Task1⭐

给定一个字符串并判断这个字符串是否是回文字符串。回文是一个向前和向后读取相同的字符串,本题
中只考虑字母和数字字符。如果是,输出 True ;否则输出 False 。
测试用例:

用例1:A man, a plan, a canal: Panama
用例2:race a car
用例3:1111111111111111111121111111111111111111

简单分析:
对于输入,我们只考虑字母和数字。
根据给出的测试样例,我们了解到需要对输入的字符串做如下操作:将所有英文字母转化为小写(或者大写)、去除字符串中除数字和英文字母以外的所有成分。操作完成后,只需比较该字符串做反转操作后得到的字符串与原字符串是否一致即可。从而编写程序。

Task1参考代码

Task2⭐

制作一个两人石头剪刀布游戏。 (提示:使用 input 输入两个玩家的选择,比较它们,打印出祝贺获胜
者的消息,并询问玩家是否想开始新游戏,输入 y 则重新开始游戏,输入 n 退出游戏,石头:Rock,剪
刀:Scissors,布:Paper)
示例输入:

Player1 input: Rock
Player2 input: Paper

示例输出:

Congratulate Player2!
Try new game?

简单分析:
可用if else解决。

Task2参考代码

Task3⭐⭐⭐

实现一个可以打印出帕斯卡三角形前 n 行的函数。(帕斯卡三角形,又称杨辉三角,每个数等于它上方
两数之和)
示例输入:

6

示例输出:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]

简单分析:
帕斯卡三角形的数学规律是“每个数等于它上方两数之和”,根据这一数学规律,我们可以根据输入的数字(代表要输出的是该三角形的前n行)来生成一个双重列表,然后对每一个位置的数值进行计算。计算完成后,按顺序输出列表即可。

Task3参考代码

Task4⭐⭐

实现一个关于列表的类 MyList,该类包括以下方法:

  1. 添加元素:push(args),参数元素类型为字符串或整型,将 args 添加到列表末尾;
  2. 获取元素:get(num),参数为整型,从列表中随机获取 num 个元素并打印;
  3. 获取列表长度:len(),打印列表长度;
  4. 删除元素:del(),删除列表第一个元素并打印;
  5. 清空列表:clear(),清空列表元素。
    在代码中实例化类并测试每个方法,并打印每次操作后的列表。
    示例

    temp_list = MyList([123, 'abc'])
    temp_list.add(456)
    print(temp_list.memory) # 这里假设类 MyList 有一个属性 memory 来记录列表
    temp_list.get(3)
    ...

    简单分析:
    需要注意python中的浅拷贝和深拷贝的区别。

Task4参考代码

下一篇博文中,我们将谈到归结原理,并尝试用归结算法求解逻辑推理问题。

声明:一座堤的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 【人工智能】python编程实践入门


为者常成 行者常至