python期末知识点完整复习

1.选择题部分

1.字符串截取

335484ac59fa46a4acad53fa8b5dc840.png

字符串的截取规则:

        1.:左边缺省代表从开头开始,右边缺省代表从结尾开始

        2.如果存在数字,:左为起始位置,右为终止位置,至于到底截取了几个数,用右边的值减去左边的值就会得到答案

        3.如果数字前面带有'-',则说明从倒数第几个位置开始截取,[:0]是错误调用,[:-1]为打印到倒数第一个元素

        4.任何时候都遵循从前往后的原则,左缺省为字符串开头,右缺省为字符串结尾

        5.如果遇到两个冒号的情况,第二个冒号后面是步长,正负号表示方向,绝对值表示大小

如::-1可以拆解为以下方面:':'代表遍历字符串,而-1表示步长为1且方向为从后往前,所以为反向遍历字符串,:-5:-3首先计算前面的范围,为从开头到倒数第五个元素,此时由于步长为负数,所以为从末尾到倒数第五个元素,步长为3,所以为96(退掉步长中的负数:前面:的左右两侧交换并且遍历顺序取反)

d51c9c6a4c604ba284188aa0f41e6426.png

e699be47519a43caba7b761743c1137d.png

切记左闭右开

2.列表截取

列表截取与字符串截取完全相同,只不过字符串的字符换成了列表元素,下面是一些常用内建函数

list.append(尾插),list..remove(删除列表某元素)

737891b542934fcea47ce9df17fa45be.png

01f86649c60542c1bf1567f3fd2432cf.png

这个也是左闭右开 

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(跳过这一次循环接下来的内容,注意条件必须改变,否则会造成死循环)

注意点

cdce633987ab4979bb6b9b712e376929.png

0b7f2f15c49f4cd090b71072e624b239.png

这种调用是左闭右开的,包括字符串也是左闭右开的

165c766bdd9a4006820d0c02d0ad603e.png

6892c504e43240f7b2cd8444e28a93e2.png

这样就是全部调用了

6.函数

默认参数和c++缺省参数一样,写成a="1123"的形式,如果形参是*变量名,表示不定长参数,因为这是一个指针

变量:分为局部变量和全局变量,局部变量在函数内使用,全局变量在整个程序内使用,局部变量在函数内的优先级高于全局变量,global 变量表示在函数内调用甚至改变全局变量

7.类

bd0386c8314941c2b4b86f143044a995.png

注意公有数据和私有数据的定义,self是每个类函数必须的形参变量,注意打印格式

if __name__ == "__main__":  
   

仅在文件运行时调用

私有属性只能在类内部使用,前面加__,公有属性可以在类外部进行调用,__init__是构造函数,如果类函数是公有则 def加函数名,如果是私有则 def 加__函数名,私有方法不能在类外部对象中调用,保护属性就是只能在类和子类对象中访问,单下划线开头

单继承与多继承 :对象名后面加括号里面写父类名,后面再带一个:,括号中间的类用逗号隔开

方法重写:如果子类对基类方法进行重写,则调用子类时只会调用子类方法

5a643fbac9bd497997d24cc0ac6d9583.png

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)

简单版本,复杂版本之后更新

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值