1.选择题部分
1.字符串截取
字符串的截取规则:
1.:左边缺省代表从开头开始,右边缺省代表从结尾开始
2.如果存在数字,:左为起始位置,右为终止位置,至于到底截取了几个数,用右边的值减去左边的值就会得到答案
3.如果数字前面带有'-',则说明从倒数第几个位置开始截取,[:0]是错误调用,[:-1]为打印到倒数第一个元素
4.任何时候都遵循从前往后的原则,左缺省为字符串开头,右缺省为字符串结尾
5.如果遇到两个冒号的情况,第二个冒号后面是步长,正负号表示方向,绝对值表示大小
如::-1可以拆解为以下方面:':'代表遍历字符串,而-1表示步长为1且方向为从后往前,所以为反向遍历字符串,:-5:-3首先计算前面的范围,为从开头到倒数第五个元素,此时由于步长为负数,所以为从末尾到倒数第五个元素,步长为3,所以为96(退掉步长中的负数:前面:的左右两侧交换并且遍历顺序取反)
切记左闭右开
2.列表截取
列表截取与字符串截取完全相同,只不过字符串的字符换成了列表元素,下面是一些常用内建函数
list.append(尾插),list..remove(删除列表某元素)
这个也是左闭右开
3.字典
dict={1:'hzau',2:'python'}
print(dict)
这是字典的基本格式
dict={1:'hzau',2:'python'}
print(dict[1])
print(dict[5])
这个就是通过键值对访问字典,没有报错,键是唯一的,不可变的,但是如果存在多个键则只保留最后一个
常用的字典操作,len(字典元素个数),str(输出字典以字符串的形式)
4.if
if 条件1:
# 当条件1成立时执行这里的代码块
elif 条件2:
# 当条件2成立时执行这里的代码块
elif 条件3:
# 当条件3成立时执行这里的代码块
else:
# 当以上条件都不成立时执行这里的代码块
if后面可以不加括号,条件后面必须加':'
if的条件:and or not
if后面的条件必须是true或者false,其中,字符串字典等是否为空也可以作为条件
5.循环
格式
while 条件:
执行语句
for 条件:
执行语句
关键词:break(终止循环)和continue(跳过这一次循环接下来的内容,注意条件必须改变,否则会造成死循环)
注意点
这种调用是左闭右开的,包括字符串也是左闭右开的
这样就是全部调用了
6.函数
默认参数和c++缺省参数一样,写成a="1123"的形式,如果形参是*变量名,表示不定长参数,因为这是一个指针
变量:分为局部变量和全局变量,局部变量在函数内使用,全局变量在整个程序内使用,局部变量在函数内的优先级高于全局变量,global 变量表示在函数内调用甚至改变全局变量
7.类
注意公有数据和私有数据的定义,self是每个类函数必须的形参变量,注意打印格式
if __name__ == "__main__":
仅在文件运行时调用
私有属性只能在类内部使用,前面加__,公有属性可以在类外部进行调用,__init__是构造函数,如果类函数是公有则 def加函数名,如果是私有则 def 加__函数名,私有方法不能在类外部对象中调用,保护属性就是只能在类和子类对象中访问,单下划线开头
单继承与多继承 :对象名后面加括号里面写父类名,后面再带一个:,括号中间的类用逗号隔开
方法重写:如果子类对基类方法进行重写,则调用子类时只会调用子类方法
8.pandas中行号,列号,行与列的控制
1.生成默认标号:从0开始的代码
s1=pd.Series([1,2,3,4])
print(s1)
得到如下序列
0 1
1 2
2 3
3 4
创建一个带有自定索引的Series
s1=pd.Series([1,2,3,4],index=['x','y','z','w'])
print(s1)
得到如下序列
x 1
y 2
z 3
w 4
如果使用字典则键就是行标号
创建一个带有默认行号列号的dataframe
df=pd.DataFrame([[]1.2],[3,4],[5,6])
print(df)
0 1
0 1 2
1 3 4
2 5 6
自定义行号列号的dataframe
df2=pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]},index=['x','y','z'])
print(df2)
打印结果:
a b c
x 1 4 7
y 2 5 8
z 3 6 9
所以,综上所述,Series的行号用index控制,否则为0,1,2........,第n列为每个子列表的第n个元素,Dataframe的行号为index,列号为字典的键,第n行为字典的每个值的第n个,第n列为第n个值
通过字典列表创建和通过字典列表一样,给出实例
data = [
{'Name': 'Alice', 'Age': 25, 'City': 'New York'},
{'Name': 'Bob', 'Age': 30, 'City': 'Los Angeles'},
{'Name': 'Charlie', 'Age': 35, 'City': 'Chicago'},
{'Name': 'David', 'Age': 40, 'City': 'Houston'}
]
df = pd.DataFrame(data)
print(df)
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeless等
2.大题部分
1.选择循环函数大题
def he(list):
if len(list)==0:
return 0
sum=0
for i in list:
sum=sum+i
return sum
def ji(list,i):
if i>=len(list):
return 1
p=1
return p*list[i]*ji(list,i+1)
list=[1,2,3,4]
a=he(list)
print(a)
t=ji(list,0)
print(t)
这是一个简单的递归循环应用实例
2.数据分析和可视化(pandas)
查看前几行数据(dataframe).head(行数),默认五行
提取一列(dataframe).键(列表字典)
添加一行dataframe[键]=[数据]
删除列: del dataframe[键]
转置打印:dataframe.T
其余看上面的选择题部分
3.类的综合
给出实例
class person:
weight=0;
height=0;
name=''
def __init__(self,n,m,list1):
self.weight=n
self.height=m
self.name=list1
def print1(self):
print("我的名字是{},我的体重是{},我的身高是{}".format(self.name,self.weight,self.height),end='')
class teach:
score=0
def __init__(self,n):
self.score=n
def print2(self):
print('我的学分是{}'.format(self.score),end='')
class me(person,teach):
num=0
def __init__(self, n, m, list1,p,q):
person.__init__(self,n,m,list1)
teach.__init__(self,p)
self.num=q
def print3(self):
person.print1(self)
teach.print2(self)
print("我的成绩是{}".format(self.num))
w=me(150,150,"王",22,3.3)
w.print3()
接下来是类的运算符重载,可以参考选择题的写法
4.爬虫与文件操作
import requests
import re
url="网站"
head={http请求}
respons=requests.get(url,headers=head)
html=respons.text
pattern=re.compile("正则表达",re.S)
items=re.findall(pattern,html)
with open("test.txt",'w',ecoding="utf-8")as file:
for item in items:
file.write(item+'\n')
这是requests和正则表达爬取,beautifulsoup太复杂了一般不考,爬出来的是一个字符串列表
文件操作,及如何将爬取到的列表写入到txt,csv和excel文件中,上面的是txt的写入方法
以下为csv文件的写入,以excel的形式,并且newline防止文件生成多余空行
import csv
out=open("text.csv",'w',newline='')
cw=csv.writer(out,dialect='excel')
cw.writerow(items)
out.close()
以下为excel文件的写入
import xlwt
book=xlwt.Workbook(encoding="utf-8")
sheet=book.add_sheet('sheet1')
sheet.write(0,0,'name')
i=1
for it in iteams:
sheet.write(i,0,it)
i=i+1
book.save("test.xls")
5.数据库和gui
import pymysql
import tkinter as tk
from tkinter import Label
cnx = pymysql.connect(host='your_host', user='your_user', password='your_password', database='your_db')
cursor = cnx.cursor()
query = "SELECT name FROM mytable"
cursor.execute(query)
names = [i[0] for i in cursor.fetchall()]
cursor.close()
cnx.close()
root = tk.Tk()
root.title("mytable")
root.geometry('400x300')
text1 = '\n'.join(names)
L = Label(root, text=text1)
L.pack()
root.mainloop()
如果是全部则将name修改为*,写入文件不需要指定元素[0],如果查询多个则需要指定多个元素
下面是sqlite数据库,其余操作完全一样
import sqlite3
import tkinter as tk
from tkinter import Label
# 连接到 SQLite 数据库(如果数据库不存在,它将被创建)
# 假设您有一个名为 'mydatabase.db' 的数据库和一个名为 'mytable' 的表
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
# 查询 name 列
query = "SELECT name FROM mytable"
cursor.execute(query)
# 获取所有的 name 数据
names = [i[0] for i in cursor.fetchall()]
# 关闭数据库连接
cursor.close()
conn.close()
# Tkinter GUI
root = tk.Tk()
root.title("mytable")
root.geometry('400x300')
# 将所有 name 合并为一个字符串并显示
text1 = '\n'.join(names)
L = Label(root, text=text1)
L.pack(pady=20) # 添加一些垂直填充以便更好地查看标签
# 运行 Tkinter 主循环
root.mainloop()
如果要查询所有数据
import pymysql
import tkinter as tk
from tkinter import Label, Text
from tkinter.scrolledtext import ScrolledText
# 数据库连接配置
db_config = {
'host': 'your_host',
'user': 'your_user',
'password': 'your_password',
'database': 'your_db',
'charset': 'utf8mb4', # 根据您的数据库配置可能需要调整字符集
'cursorclass': pymysql.cursors.DictCursor # 使用字典游标以便获取列名作为字典的键
}
# 连接到 MySQL 数据库
cnx = pymysql.connect(**db_config)
cursor = cnx.cursor()
# 查询表的所有内容
query = "SELECT * FROM mytable"
cursor.execute(query)
# 获取所有行数据
all_rows = cursor.fetchall()
# 将数据转换为字符串以在 Label 或 Text 组件中显示
# 假设每行数据是一个字典,并且我们想要以 'key: value\n' 的格式显示
text_data = ''
for row in all_rows:
row_str = '\n '.join(row)
text_data += row_str + '\n'
# 关闭游标和数据库连接
cursor.close()
cnx.close()
# Tkinter GUI
root = tk.Tk()
root.title("mytable")
root.geometry('400x300')
# 由于 Label 可能不适合显示大量数据,我们使用 ScrolledText 组件
scrolled_text = ScrolledText(root, wrap=tk.WORD, height=10, width=50)
scrolled_text.pack(pady=20)
scrolled_text.insert(tk.END, text_data)
# 运行 Tkinter 主循环
root.mainloop()
6.数据库与web开发
import json
import pymysql
from flask import Flask
cnx = pymysql.connect(host='your_host', user='your_user', password='your_password', database='your_db')
cursor = cnx.cursor()
query = "SELECT * FROM mytable"
cursor.execute(query)
t=cursor.fetchall()
app=Flask(__name__)
@app.route('/')
def cur():
return jsonify(t)
app.run(host="127.0.0.1",port=8081)
简单版本,复杂版本之后更新