华科python与人工智能实践(公选)教程

python基础

软件下载

1.python下载安装

点击此链接进入官网windows下载地址
image
点击箭头处链接下载最新版本,进入页面后下拉
image
根据你的机器下载对应版本,一般人使用的是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 等差不多:

  1. 第一个字符必须是字母表中的字母或下划线 _ ;
  2. 标识符的其他的部分,由字母、数字和下划线组成;
  3. 标识符对大小写敏感;
  4. 标识符不能与保留字相同。
    比如:
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的特点和用法包括:

  1. 直接嵌入变量: 可以在 {} 中放置任何变量,它会直接替换为该变量的值。
  2. 支持表达式: 不仅可以放入变量,还可以放入任意表达式,Python 会计算表达式的值并插入。
  3. 调用函数: 你可以直接在 {} 中调用函数并输出结果。
  4. 格式化数字: 可以在 {} 中使用格式化指令,比如浮点数保留小数位、百分比格式等,例如:
pi = 3.1415926535
print(f"Pi to 3 decimal places: {pi:.3f}")

二、字符串处理

 字符串是 Python 中的一种基本数据类型,用于表示文本数据。字符串由字符组成,可以包含字母、数字、符号和空格等。字符串是不可变的,意味着一旦创建,字符串的内容就不能被改变。

1.字符串拼接

Python 中使用+来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:

result_string = source_string1 + source_string2
其中:

  1. source_string1:待合并的第一个字符串;
  2. source_string2:待合并的第二个字符串;
  3. 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)
其中:

  1. source_string:源字符串;
  2. sub_string:待查的目标子字符串;
  3. 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)
其中:

  1. source_string:待处理的源字符串;
  2. old_string:被替换的旧字符串;
  3. new_string:替换的新字符串;
  4. 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)
其中:

  1. source_string:待处理的源字符串;
  2. parator:分隔符;
  3. 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)
其中:

  1. source_list:待修改的列表;
  2. 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)
其中:

  1. source_list:待修改的列表;
  2. index:待插入的位置索引;
  3. 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
其中:

  1. source_list:待修改的列表;
  2. index:待修改元素的位置索引;
  3. 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)
其中:

  1. source_list:待排序的列表;
  2. sort:列表排序函数的语法关键词;
  3. 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)
其中:

  1. source_list:待查找的列表;
  2. index:查找元素的语法关键词,返回该元素的第一个索引;
  3. 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()
其中:

  1. source_list:待翻转的列表;
  2. 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)
其中:

  1. lower_limit: 生成系列整数的下限整数,不填该参数则默认为从0开始,生成的整数从此数开始,包括该数;
  2. upper_limit:生成系列整数的上限整数,必填参数,生成的整数要小于该上限;
  3. 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))
其中:

  1. list:列表函数的语法关键词;
  2. range:函数语法关键词;
  3. 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)
其中:

  1. min:数字列表求最小值的语法关键字;
  2. max:数字列表求最大值的语法关键字;
  3. 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() 方法会直接作用于待翻转的列表并修改其顺序。

四、元组与字典

posted @ 2024-09-22 21:33  Losyi  阅读(34)  评论(0编辑  收藏  举报