华科python与人工智能实践(公选)教程
python基础
软件下载
1.python下载安装
点击此链接进入官网windows下载地址
点击箭头处链接下载最新版本,进入页面后下拉
根据你的机器下载对应版本,一般人使用的是X86架构windos系统,下载箭头所指即可
若是不知道CPU架构,可见查看cpu架构,x86还是arm
下载后根据指引进行安装即可
2.环境变量配置
3.IDE下载安装(Pycharm)
4.Conda下载安装 包管理和环境管理系统
5.jupyter notebook 交互计算应用程序
一、基础语法
1.行与缩进
Python 与 C/C++、Java 这些 C 类语言不同,Python 使用缩进来表示代码块,而不是花括号,缩进的空格数量可以由个人习惯决定,但同一个代码块的缩进空格数必须相同。
if True:
print("true")
print("true")
else:
print("false")
print("false");
上面程序的 if 部分和 else 部分缩进不相同,但是在各自的代码块内缩进是相同的,所以是正确的程序。
if True:
print("true")
print("true")
这个程序的 if 部分缩进不相同,所以是错误的程序。
多行语句
Python 的代码一般是一行一条语句,语句之后的分号 ; 可加可不加。但如果要在一行中写多条语句,则需要用分号 ; 隔开每条语句。
print("hello")
print("world");
print("hello");print("world")
以上三行(四条语句)都是正确的。
2.标识符与保留字
(1)标识符
标识符就是程序中,使用的各种名称,例如:变量名、常量名、类名等等。
在 Python 中,对标识符格式的要求与 C/C++、Java 等差不多:
- 第一个字符必须是字母表中的字母或下划线 _ ;
- 标识符的其他的部分,由字母、数字和下划线组成;
- 标识符对大小写敏感;
- 标识符不能与保留字相同。
比如:
num1 = 1
float1 = 0.5
true = True #这个 true 虽然字面上的意思与值“True”相同,但 python 对大小写敏感,所以也是正确的
str1 = "hello"
这些都是正确的标识符。
而:
1value = 1 #开头不能是数字
value0.1 = 0.1 #标识符中间只能是数字,字母,下划线
if = True #与保留字if重名
都是不正确的标识符。
(2)保留字
保留字即关键字,是 Python 语言中内部使用的单词,代表一定语义。例如:and、class、if、else 等。保留字不能作为标识符,用在变量名、常量名、类名等地方。
Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
import keyword
print(keyword.kwlist)
输出:['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del','elif',
'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in','is', 'lambda', 'nonlocal'
, 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3.注释
注释是对程序代码的说明,一般是给程序员理解代码使用,不作为程序一部分。
Python 中单行注释以 # 开头:
#这是一个注释1
print("python")
#这是一个注释2
#print("python2")
多行注释可以使用多个#,也可以用一对'''(三个单引号)或者"""(三个双引号)包裹要注释的内容:
#使用多个#
#作注释
'''
用三个单引号
作注释
'''
"""
用三个双引号
作注释
"""
4.输出输出
(1)输出
print的函数的基本使用,在之前的关卡中,已经出现过多次,将要输出的内容放在print()的括号内,就可以输出:
print("hello world")
得到的结果是:hello world
print函数可以同时输出多个内容,只需要将它一起放在print的括号内,并用逗号隔开:
print("hello","world")
得到的结果:hello world
值得注意的是,同时输出的多个内容之间,会有空格隔开。
类似于 C/C++ 的printf,Python 的print也能实现格式化输出,方法是使用%操作符,它会将左边的字符串当做格式字符串,将右边的参数代入格式字符串:
print("100 + 200 = %d" % 300) #左边的%d被替换成右边的300
print("A的小写是%s" % "a") #左边的%s被替换成右边的a
得到的结果是:
100 + 200 = 300
A的小写是a
如果要带入多个参数,则需要用()包裹代入的多个参数,参数与参数之间用逗号隔开,参数的顺序应该对应格式字符串中的顺序:
print("%d + %d = %d" % (100,200,300))
print("%s %s" % ("world","hello"))
得到的结果是:
100 + 200 = 300
world hello
格式字符串中,不同占位符的含义:
占位符 | 含义 |
---|---|
%s |
作为字符串 |
%d |
作为有符号十进制整数 |
%u |
作为无符号十进制整数 |
%o |
作为无符号八进制整数 |
%x |
作为无符号十六进制整数,a~f 采用小写形式 |
%X |
作为无符号十六进制整数,A~F 采用大写形式 |
%f |
作为浮点数 |
%e /%E |
作为浮点数,使用科学计数法 |
%g /%G |
作为浮点数,使用最低有效数位 |
注意: print函数输出数据后会换行,如果不想换行,需要指定end="":
print("hello" , end="")
print("world" , end="")
得到的结果:helloworld
(2)输入
Iinput
使用input函数可以获得用户输入,在控制台窗口上,输入的一行的字符串,使用变量 = input()的形式将其赋值给一个变量:
str1 = input()
print("输入的是%s" % str1)
如果输入hello然后回车,则输出:输入的是hello。
还可以在input()的括号内,加入一些提示信息:
str1=input("请输入:")
print("输入的是%s" % str1)
运行之后,会先显示请输入:,输入数据hello之后回车,则会得到输出:输入的是hello,控制台上显示的全部内容为:
请输入:hello
输入的是hello
II 字符串转换
input函数接收的是用户输入的字符串,此时还不能作为整数或者小数进行数学运算,需要使用函数将字符串转换成想要的类型。
转换成整数,使用int()函数:num1 = int(str)
转换成小数,使用float()函数:f1 = float(str)
str = input()
num1 = int(str)
f1 = float(str)
print("整数%d,小数%f" % (num1,f1))```
如果输入10,得到的输出是:整数10,小数10.000000。
III f-string格式化字符串
f-string是 Python 3.6 引入的一种格式化字符串的方式,它比 % 操作符和 str.format() 更加简洁和高效。f-string 允许直接在字符串内嵌入表达式或变量。基本使用语法如下:
在字符串前加上 f 或 F,并在字符串内部使用 {} 包裹变量或表达式,例如:
name = "Alice"
age = 30
message = f"My name is {name} and I am {age} years old."
print(message)
#输出
#My name is Alice and I am 30 years old.
f-string的特点和用法包括:
- 直接嵌入变量: 可以在 {} 中放置任何变量,它会直接替换为该变量的值。
- 支持表达式: 不仅可以放入变量,还可以放入任意表达式,Python 会计算表达式的值并插入。
- 调用函数: 你可以直接在 {} 中调用函数并输出结果。
- 格式化数字: 可以在 {} 中使用格式化指令,比如浮点数保留小数位、百分比格式等,例如:
pi = 3.1415926535
print(f"Pi to 3 decimal places: {pi:.3f}")
二、字符串处理
字符串是 Python 中的一种基本数据类型,用于表示文本数据。字符串由字符组成,可以包含字母、数字、符号和空格等。字符串是不可变的,意味着一旦创建,字符串的内容就不能被改变。
1.字符串拼接
Python 中使用+来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:
result_string = source_string1 + source_string2
其中:
- source_string1:待合并的第一个字符串;
- source_string2:待合并的第二个字符串;
- result_string:合并后的字符串。
注意:如果需要,在两个字符串之间可以增加相应的空格,具体见下面的例子。例如,将姓氏和名字拼接成全名:
# coding=utf-8
# 将姓氏和名字分别保存在两个变量中
first_name = 'Zhang'
last_name = 'san'
# 将姓氏和名字拼接,将结果存储在full_name变量中
full_name = first_name + " " + last_name
print(full_name)
#输出结果:
#Zhang san
2.字符转换
3.字符串查找与替换
(1)字符串查找
Python 提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1。find()方法的基本使用语法如下:
source_string.find(sub_string)
其中:
- source_string:源字符串;
- sub_string:待查的目标子字符串;
- find:字符串查找方法的语法关键字。
例如,在一个字符串中,查找两个单词的位置:
# coding=utf-8
# 创建一个字符串
source_string = 'The past is gone and static'
# 查看"past"在source_string字符串中的位置
print(source_string.find('past'))
# 查看"love"在source_string字符串中的位置
print(source_string.find('love'))
#输出结果:
#4
#-1
(2)字符串替换
Python 提供了replace()方法,用以替换给定字符串中的子串。其基本使用语法如下:
source_string.replace(old_string, new_string)
其中:
- source_string:待处理的源字符串;
- old_string:被替换的旧字符串;
- new_string:替换的新字符串;
- replace:字符串替换方法的语法关键词。
该操作返回值为转换后的新串,若要直接对原串修改,应写source_string=source_string.replace(old_string, new_string)
例如,在如下字符串中,用small子串替换big子串:
# coding = utf-8
# 创建一个字符串circle
source_string = 'The world is big'
# 利用replace()方法用子串"small"代替子串"big"
print(source_string.replace('big','small'))
#输出结果:
#The world is small
(3)字符串分割
Python 提供了split()()方法实现字符串分割。该方法根据提供的分隔符,将一个字符串分割为字符列表,如果不提供分隔符,则程序会默认把空格(制表、换行等)作为分隔符。其基本使用语法如下:
source_string.split(separator)
其中:
- source_string:待处理的源字符串;
- parator:分隔符;
- split:字符串分割方法的关键词。
例如,用+、/还有空格作为分隔符,分割字符串:
# coding = utf-8
# 待处理字符串source_string
source_string = '1+2+3+4+5'
# 利用split()方法,按照`+`和`/`对source_string字符串进行分割
print(source_string.split('+'))
print(source_string.split('/'))
#输出结果:
#['1', '2', '3', '4', '5']
#['1+2+3+4+5']
三、玩转列表
列表是 Python 中一种内置的数据结构,用于存储多个元素。它是一个有序的可变集合,可以包含不同类型的数据,例如数字、字符串、甚至其他列表。列表中的元素可以通过索引访问,并且支持多种操作,如增、删、改、查。
特点:
- 有序性:列表中的元素按插入顺序存储,每个元素都有一个对应的索引(从 0 开始)
- 可变性:列表是可变的,可以动态地添加、修改或删除元素。
- 多样性:列表可以存储不同类型的元素,包括整数、浮点数、字符串、对象等。
1.列表元素的增删改
(1)添加列表元素
Python 提供了append()和insert()等函数,实现向一个列表增加新元素的功能。
(1)在列表尾部添加元素
在 Python 中,可以使用append()方法向一个列表的尾部追加一个元素,其基本语法如下:
source_list.append(obj)
其中:
- source_list:待修改的列表;
- obj:待插入的元素。
例如,要向guests列表尾部增加客人Hu qi,相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 向guests列表尾部追加一个名为Hu qi的客人
guests.append('Hu qi')
# 输出新的guests列表
print(guests)
#输出结果为:
['Zhang san','Li si','Wang wu','Zhao liu','Hu qi']
(2)在列表指定位置添加元素
Python 也提供了insert()方法,可以在列表任意指定位置插入元素,其基本语法为:
source_list.insert(index,obj)
其中:
- source_list:待修改的列表;
- index:待插入的位置索引;
- obj:待插入的元素。
注意:在 Python 中,列表起始元素的位置索引为0。
例如,要向guests列表中Zhang san的后面增加客人Hu qi,则相应的语句为:
# 创建并初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 向guests列表Zhang san后面增加一个名为Hu qi的客人
guests.insert(1,'Hu qi')
# 输出新的guests列表
print(guests)
#输出结果为:
['Zhang san','Hu qi','Li si','Wang wu','Zhao liu']
(2)修改列表元素
Python 中修改列表元素的方法为:直接将列表中要修改的元素索引指出,然后为其指定新值。其基本语法如下:
source_list[index] = obj
其中:
- source_list:待修改的列表;
- index:待修改元素的位置索引;
- obj:待元素的新值。
例如,将请客名单guests列表中的Wang wu改为Wang shi,则相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 将列表中的`Wang wu`改为`Wang shi`
guests[2] = 'Wang shi'
# 输出新的guests列表
print(guests)
#输出结果为:
['Zhang san','Li si','Wang shi','Zhao liu']
(3)删除列表元素
2.列表的排序、查找、翻转
(1)列表排序
Python 针对列表数据结构内置提供了sort()方法,实现对列表元素的排序功能。其基本语法如下:
source_list.sort(reverse=True)
其中:
- source_list:待排序的列表;
- sort:列表排序函数的语法关键词;
- reverse:sort函数的可选参数。如果设置其值为True,则进行反向从大到小排序,如果设置为False或者不填写该参数,则默认进行正向从小到大排序。
例如,给定一个客人列表guests,我们对其按照字母排序如下:
guests = ['zhang san','li si','wang wu','sun qi','qian ba']
guests.sort()
print(guests)
guests.sort(reverse=True)
#print(guests)
程序输出结果:
['li si','qian ba','sun qi','wang wu','zhang san']
['zhang san','wang wu','sun qi','qian ba','li si']
注意:sort函数会直接作用于待排序的列表并修改其排序。
(2) 列表查找
Python 提供了index() 和 count() 方法用于查找列表中的元素。index() 方法用于返回指定元素的索引,count() 方法用于返回指定元素在列表中出现的次数。其基本语法如下:
index_value = source_list.index(value)
count_value = source_list.count(value)
其中:
- source_list:待查找的列表;
- index:查找元素的语法关键词,返回该元素的第一个索引;
- count:返回该元素在列表中出现的次数。
例如,给定一个列表 numbers,我们可以查找某个数字的索引和计数:
numbers = [1, 2, 3, 2, 4, 2]
index_of_two = numbers.index(2)
count_of_twos = numbers.count(2)
print(index_of_two) # 输出: 1
print(count_of_twos) # 输出: 3
注意:如果要查找的元素不在列表中,index() 方法会引发 ValueError。
(3) 列表翻转
Python 提供了reverse() 方法来翻转列表中的元素顺序,其基本语法如下:
source_list.reverse()
其中:
- source_list:待翻转的列表;
- reverse:翻转列表的语法关键词。
例如,给定一个列表 items,我们可以翻转其顺序:
items = [1, 2, 3, 4, 5]
items.reverse()
print(items)
#程序输出结果:
csharp
[5, 4, 3, 2, 1]
3.数值列表:用数字说话
(1)range()函数
Python 提供了range()函数,能够用来生成一系列连续增加的数字。其基本使用语法有如下三种:
range(lower_limit,upper_limit,step)
其中:
- lower_limit: 生成系列整数的下限整数,不填该参数则默认为从0开始,生成的整数从此数开始,包括该数;
- upper_limit:生成系列整数的上限整数,必填参数,生成的整数要小于该上限;
- step:在下限和上限之间生成系列整数之间的间隔步长,不填该参数则默认步长为1。
注意:range()函数的三个参数都只能为整数。如果range()函数中仅一个参数,则该参数表示upper_limit,如果仅两个参数,则分别表示lower_limit和upper_limit。
例如,要生成1~6之间步长为2的系列整数:
for i in range(1,6,2):
print(i)
输出结果:
1
3
5
(2)基于range()函数创建数字列表
我们可以通过range()函数,利用 Python 列表提供的append()插入功能创建一个列表。例如,我们要创建一个包含10个0~9整数的平方的列表:
# 声明一个列表变量
numbers = []
# 利用append()函数和range()函数向列表插入目标元素
for i in range(10):
number = i**2
numbers.append(number)
print(numbers)
#输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(3)使用list()函数和range()函数创建数字列表
我们可以利用list()函数将range()生成的系列数字直接转为列表,这时range()函数的返回值将会作为list()函数的参数,输出为一个数字列表。其基本使用语法如下:
data_list = list(range(lower_limit,upper_limit,step))
其中:
- list:列表函数的语法关键词;
- range:函数语法关键词;
- data_list:最终生成的列表变量。
例如,我们要生成并输出1~5的数字列表:
data_list = list(range(1,6))
print(data_list)
输出结果:
[1,2,3,4,5]
(4)对数字列表进行简单的统计运算
Python 中有一些专门处理数字列表简单的统计运算的函数,利用这些函数可以轻松找到数字列表的最小值、最大值及进行总和等一系列统计运算。其基本语法如下:
min_value = min(data_list)
max_value = max(data_list)
sum_value = sum(data_list)
其中:
- min:数字列表求最小值的语法关键字;
- max:数字列表求最大值的语法关键字;
- sum:数字列表求和的语法关键字。
具体使用示例如下:
numbers = [2,4,11,1,21,32,5,8]
print('The min number is',min(numbers))
print('The max number is',max(numbers))
print('The sum is',sum(numbers))
# 输出结果:
The min number is 1
The max number is 32
The sum is 84
注意:reverse() 方法会直接作用于待翻转的列表并修改其顺序。