一、基本数据类型及应用
1、基本数据
(1)整数(int)
在 Python 中,整数是一种基本的数据类型,用于表示没有小数部分的数字,整数没有固定的最大值,可以根据系统内存动态调整。Python 3 中有两种整数类型:
int:普通整数类型。
long:长整数类型,在 Python 2 中使用,Python 3 中的 int 类型可以自动转换为长整数。
实例:
a=2
b=4
d="5"
c=int(d) #强制转化:将字符串转化为整型
print(b/a) #输出:2.0
print(c//a) #输出:2
print(c%a) #输出:1
print(a**b) #输出:16
(2)浮点数(float)
在 Python 中,浮点数是一种表示有小数部分的数字的数据类型。Python 中的浮点数遵循 IEEE 754 标准,通常以双精度格式存储(即64位)。表示带有小数点的数值,如 3.14、-0.5 等。
实例:
a=6.66666
b=4
d="2.5"
z = 6.02e3 #6.02x10^3
c=float(d) #强制转化:将字符串转化为浮点型
print(b*c) #输出:10.0
print(z) #输出:6020.0
k=round(a*c,3) #两小数相乘,保留三位小数(会四舍五入)
print(k) #输出:16.667
(3)布尔值(bool)
在 Python 中,布尔值是一种表示真(True)或假(False)的数据类型。布尔类型通常用于逻辑判断和条件控制,例如在条件语句(if 语句)、循环语句等中使用,只有两个取值 True 和 False。
任何非零、非空、非空字符串、非空列表等都会被视为 True,而零、空、空字符串、空列表等会被视为 False。
实例:
print(3==4) #输出: false
print(3!=4) #输出: true
print(3>4) #输出: false
print(4<=4) #输出: true
print(3==4 or 4==4) #输出: true
print(3==4 and 4==4) #输出: false
print(not 3==4) #输出: true
print(bool(0)) #输出: false
print(bool("")) #输出: false
print(bool("123")) #输出: true
(4)字符串(str)
在 Python 中,字符串是一种不可变的数据类型,用于表示文本数据。字符串可以使用单引号(' ')或双引号(" ")来定义。
实例:
name="hello"
name_1='world'
print(name+","+name_1) # 输出: hello,world
print(name[1]) # 输出: e
print(name[1:4]) # 输出: ell
print(f"who: {name}") # 输出: who: hello
print("who: {}".format(name_1)) # 输出: who: world
s = " Hello, World! "
print(s.upper()) # 转换为大写
print(s.strip()) # 去除首尾空格
words = s.split(',') # 按逗号分割字符串
new_string = '-'.join(words) # 用破折号连接字符串列表
print(new_string) # 输出: Hello- World!
name_2="MathMode"
age=16
print("Name: %s, Age: %d" % (name_2, age)) # 输出:Name: MathMode, Age: 16
(5)列表(list)
Python 中的列表(List)是一种有序、可变的数据结构,用于存储一组元素。列表可以包含任意类型的元素,包括数字、字符串、对象等,并且可以根据需要进行动态增加、删除和修改。
实列:
my_list = [1, 2, 3, 4, 5]
you_list = ["you", "list"]
print(my_list[2]) # 输出:3 获取第三个元素
print(len(my_list)) # 输出:5 得到list长度
print(my_list[1:3]) # 输出:[2,3] 获取索引1到2的子列表
you_list.append(8) # 向list末尾添加元素
print(you_list) # 输出:['you', 'list', 8]
squares = [x ** 2 for x in range(1, 5)] # 创建一个包含 1 到 4 平方值的列表
print(squares) # 输出:[1, 4, 9, 16]
new_list=my_list+you_list # 连接两个列表
print(new_list) # 输出:[1, 2, 3, 4, 5, 'you', 'list', 8]
new_my_list=my_list*2 # 重复列表元素
print(new_my_list) # 输出:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
(6)元组(tuple)
在 Python 中,元组(Tuple)是一种有序、不可变的数据结构,用于存储一组元素。与列表不同,元组一旦创建就无法修改,也就是说元组是不可变的。由于元组是不可变的,因此不能对元组进行添加、删除或修改操作,但可以通过拼接等方式生成新的元组。
实例:
my_tuple = (1, 2, 3, 4)
print(my_tuple[1]) # 输出: 2 获取第二个元素
print(my_tuple.index(2)) # 输出: 1 获取元素为2的索引
a, b, c, d = my_tuple # 将元组中的元素分别赋值给变量 a, b, c
print(a,b,c,d) # 输出: 1 2 3 4
new_tuple = my_tuple + (3, 4, 5, 6, 7, 8) # 拼接两个元组生成新的元组
print(new_tuple) # 输出:(1, 2, 3, 4, 3, 4, 5, 6, 7, 8)
print(new_tuple.count(3)) # 输出:2 统计元素为2的数量
(7)集合(set)
在 Python 中,set(集合)是一种无序且元素唯一的集合数据类型。它类似于数学中的集合概念,可以用于执行各种集合操作,如并集、交集、差集等。用于存储无序、唯一元素的数据结构。
实例:
my_set = {1, 2, 3, 4, 5,5}
you_set = set([4,5,5,6,7,8,9])
print(my_set) # 输出:{1, 2, 3, 4, 5}
print(you_set) # 输出: {4, 5, 6, 7, 8, 9}
print(my_set | you_set) # 输出:{1, 2, 3, 4, 5, 6, 7, 8, 9} 并集
print(my_set & you_set) # 输出:{4, 5} 交集
print(my_set - you_set) # 输出:{1, 2, 3} 差集
print(my_set ^ you_set) # 输出:{1, 2, 3, 6, 7, 8, 9} 对称差集
my_set.add(10) # 向集合中添加单个元素
you_set.update([10,11]) # 向集合中添加多个元素
my_set.remove(2) # 移除集合中的指定元素,如果元素不存在则引发 KeyError 异常
you_set.discard(7) # 移除集合中的指定元素,如果元素不存在也不会引发异常。
print(my_set) # 输出:{1, 3, 4, 5, 10}
print(you_set) # 输出:{4, 5, 6, 8, 9, 10, 11}
my_set.clear() # 清空集合中的所有元素
(8)字典(dict)
在 Python 中,字典(Dictionary)是一种无序的数据结构,用于存储键-值(key-value)对。字典是可变的,可以动态地添加、删除和修改其中的元素。键(key)唯一,值(value)可以不唯一。
实例:
my_dict={"name": "MathMode", "age": 20, "city": "classroom", "sex": "man"}
print(my_dict["name"]) # 输出: MathMode 通过键(key)访问值(value)
my_dict["grade"] = "CET-4" # 添加新的键-值对
del my_dict["city"] # 删除键为 "city" 的键-值对
for key in my_dict: # 遍历字典
print(key, my_dict[key])
my_dict["age"] = 31 # 修改键 "age" 对应的值
for key, value in my_dict.items(): # 遍历字典
print(key, value)
value = my_dict.pop("age") # 删除并返回键为 "age" 的值
values = my_dict.values() # 得到字典的所有值(还有keys()方法得到所有键)
value_list = list(values) # 使用列表化获取所有值
print(value_list) # 输出 ['MathMode', 'man', 'CET-4']
2、基本应用
2.1、注解及缩进
(1)注解
单行注解:以#号开头。
多行注解:以三个单引号(''')或双引号(""")开头和结尾。
实例:
# 单行注解
'''
多行注解1
多行注解1
'''
"""
多行注解2
多行注解2
"""
(2)缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
实例:(看输出结果)
print("缩进1")
if True:
print("缩进2")
if True:
print("缩进3")
if False:
print("缩进4")
print("缩进5")
print("缩进6")
2.2 输入输出
(1)输入语法
<变量名> = input(<提示性文字>)
input() 函数始终将用户输入解释为字符串,如果需要将其转换为其他类型(如整数或浮点数),则需要显式进行类型转换。
(2)输出语法
print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
print() 函数可以接受多个参数,并且在打印时会将它们用空格分隔。您也可以通过设置 sep 参数来指定分隔符。且默认会在输出结束时自动换行,如果不想换行,可以设置 end 参数为空字符串 end=''。
(3)实例
n=eval(input("请输入:")) # eval: 动态地执行字符串表达式,并返回表达式的结果。
m=list(map(int,input("请输入一组数据:").split()))
print(n*4,end=" ") # 输出后不换行
print(m)
print(11,"study","who",3.14,sep='|') # 将默认为逗号的分隔符,改为自定义的'|'符号
二、Python爬虫
Python爬虫指的是使用Python编程语言编写的网络爬虫程序,用于从互联网上获取信息。网络爬虫是一种自动化程序,通过访问网页并提取其中的数据,可以用于各种目的,如数据采集、搜索引擎索引、信息监控等。
Python是一种功能强大且易于学习的编程语言,拥有丰富的第三方库和工具,因此成为了爬虫开发的热门选择。
Python的爬虫库一般包括:
(1)Requests: 用于发送HTTP请求,获取网页内容。
(2)Beautiful Soup: 用于解析HTML和XML文档,提取所需的数据。
(3)Scrapy: 一个功能强大的爬虫框架,提供了高效的爬取、处理和存储数据的功能。
(4)Selenium: 用于模拟浏览器行为,支持动态网页的爬取
模板:
import requests
from bs4 import BeautifulSoup
# 网页URL
url = "http://example.com"
# 发送GET请求
response = requests.get(url)
# 解析网页
soup = BeautifulSoup(response.text, 'html.parser')
# 找到指定的div(假设div的id为'mydiv')
div = soup.find('div', id='mydiv')
# 获取div中的内容
text = div.get_text()
#输出内容
print(text)
三、Python在数学建模中的简单应用
1、基础图形实现
在 Python 中,matplotlib 是一个用于绘制图表和数据可视化的库,而 pyplot 模块是 matplotlib 库的一个子模块,提供了类似于 MATLAB 的绘图接口。
1.1、饼状图
import matplotlib.pyplot as plt
# 饼状图数据
labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] # 标签
sizes = [10.5, 15.5, 4, 7.5, 19.5, 8, 1, 11, 8, 5] # 各部分占比(百分比)
# 饼状图属性设置
colors = ['red', 'green', 'blue', 'yellow', 'orange', 'cyan', 'purple', 'pink', 'brown', 'gray'] # 颜色设置
explode = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) # 突出显示某一部分,把想凸显的部分设置的参数大于0即可,这里未设置凸显部分
# 画饼状图
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',shadow=True, startangle=90)
# 设置标题
plt.title('Myweige')
# 显示图形
plt.axis('equal') # 保证长宽相等,使饼状图为正圆形
plt.show()
1.2、折线图
import matplotlib.pyplot as plt
# x 轴数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 第一条线的 y 轴数据
y1 = [2, 6, 3, 28, 10, 7, 12, 9, 15, 11]
# 第二条线的 y 轴数据
y2 = [11, 3, 5, 7, 9, 1, 21, 8, 6, 18]
# 绘制第一条线
plt.plot(x, y1, label='Line 1')
# 绘制第二条线
plt.plot(x, y2, label='Line 2')
# 添加标题和轴标签
plt.title('Weige Picture')
plt.xlabel('X')
plt.ylabel('Y')
# 添加图例
plt.legend()
# 显示图形
plt.show()
1.3、柱状图
import matplotlib.pyplot as plt
# x轴数据
x = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
# y轴数据
y = [10, 15, 7, 12, 9, 13, 8, 11, 6, 17, 14]
# 绘制柱状图
plt.bar(x, y)
# 添加标题和轴标签
plt.title('Example')
plt.xlabel('X-lable')
plt.ylabel('y-lable')
# 显示图形
plt.show()
1.3、散点图
import matplotlib.pyplot as plt
# x轴数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# y轴数据
y = [6, 7, 8, 9, 10, 2, 11, 4, 1, 5]
# 绘制散点图
plt.scatter(x, y)
# 添加标题和轴标签
plt.title('Weige-Example')
plt.xlabel('X-label')
plt.ylabel('Y-label')
# 显示图形
plt.show()
2、数据处理
实例:有一个名为"Test1.xlsx"的文件数据如下:
要求:把数据中样本A、样本B、样本C分别选出来,并创建相应的xlsx文件。
Python代码如下:(相关代码作用看注解)
import numpy as np
import pandas as pd
data=pd.DataFrame(pd.read_excel('.\Test1.xlsx',sheet_name='Sheet1'))#'.\'表示相对路径,读取表名为”Sheet1“的表
print(data)
data_a=data.loc[data['样本']=='A'].reset_index(drop=True)#把样本'A'的数据选出来存入data_a中
data_b=data.loc[data['样本']=='B'].reset_index(drop=True)#把样本'B'的数据选出来存入data_b中
data_c=data.loc[data['样本']=='C'].reset_index(drop=True)#把样本'C'的数据选出来存入data_c中
print(data_a)
print(data_b)
print(data_c)
data_a.to_excel("样本A.xlsx")#创建名字为'样本A.xlsx'的文件并把数据导入文件中
data_b.to_excel("样本B.xlsx")#创建名字为'样本B.xlsx'的文件并把数据导入文件中
data_c.to_excel("样本C.xlsx")#创建名字为'样本C.xlsx'的文件并把数据导入文件中
#在a,b,c中选取data_a为样例:
num_a=(data_a==12).astype(int).sum(axis=1)#按行统计值为12的个数
num_a=(240-np.array(num_a)).tolist()#num_a=240-上行统计的个数
print(num_a)
tota_a=data_a.sum(axis=1).to_list()#对data_a的数据按行求和
print(tota_a)
程序创建的文件在该程序文件目录下(运行程序自动会创建相应文件),如图: