【Python】期末考试复习

目录

Python考试内容整理

1.考试分值整理

2.考试内容整理

Python图像处理

OpenCV库

PIL

Skimage

Pandas数据处理及分析

 numpy

其他

文件操作中rwa相关

切片

Python练习题DAY1

三位数判断是否是水仙花数 

年月日转天数 

BMI体重身高换算 

修狗人类年龄转换 

寻找最小数 

Python练习题DAY2

打印乘法表 

找出质数 

计算阶乘和 

猜数字 

列表和索引下标 

Python练习题DAY3

不重复八位数整除 

杨辉三角 

公共前缀(*) 

字符串出勤记录 

数据字典括号匹配 

Python练习题DAY4

丢骰子判断和 

递归回文判定

递归实现x的n次幂函数 

统计元音字母(*) 

装饰器登录 

Python练习题DAY7

 读取文件(open(r'c:\test\work.txt','r')as f:)

创建二维数组(numpy.arrange(1,17).reshape(4,4)) 

文件写入姓名(open(r'e:\temp\name.txt','a')as f:) 

 创建随机数数组(np.random.random([4,5]) arr.sum arr,mean axis=0/1)


Python考试内容整理

1.考试分值整理

  • 填空题30分
  • 代码填空题30分
  • 编程题40分

2.考试内容整理

  • numpy
  • 图像
  • pandas数据处理

(以上出现在程序填空&大题中)

  • 列表列表运算
  • 切片
  • 循环的操作
  • 作业DAY1 2 3 4 7(编程题)
  • python的注释是什么(#-送分题)

Python图像处理

python图像处理 

OpenCV库

imread()-读入图片

imshow()-显示图像

cv2.imshow('Lena',img)
cv2.waitKey(0)#表示延迟多少秒使用
cv2.destroyAllWindows()#释放由openCV创建的所有窗口

imwrite()-存储图像

cv2.imwrite('lena.jpg',img)
#第一个参数是文件名称,第二个参数是存储对象。

PIL

open()

show()-显示图像(弹出单独图像窗口)

save()-保存图像

Skimage

imread()-读入图像

imshow()-显示图像

imsave()-存储图像

img_as_ubyte()-将图像像素灰度取值范围转化


Pandas数据处理及分析

pandas数据处理和分析

在这里插入图片描述

查看前5行(默认5行)data.head()

查看倒数5行 data.tail()

查看维度信息 data.shape()

查看每一列数据格式 data.dtypes()

查看数据表基本信息(维度、列名称、数据格式、所占空间)data.info()

查看某一列具体信息 data.列名

按索引提取单行/多行数值 data.iloc

  • 提取第n行:data.iloc[n]
  • 提取到第n行:data.iloc[0:n]
  • 提取所有行,0到n列:data.iloc[:,0:n]
  • 提取第0,2,4行,第3,4列:data.iloc[0,2,4][3,4]

将数据进行排序 data.sort_values(筛选条件).iloc[:n,:]

查看类别信息 count_class=pd.value_counts(data['列名'],sort=True).sort_index()

查看基本的统计信息 data.describe()


pandas.merge 根据键将不同DataFrame行连接

pandas.concat 全连接


 numpy

其他

文件操作中rwa相关

r:读取文件-不存在报错

w:写入文件-不存在先创建再写入,会覆盖

a:写入文件-不存在先创建再写入,追加文件末尾

切片

列表[起始:结束:步长] 
起始包含在子列表中,但是结束不包含在新列表中

arr2=[1,2,3,4,5,6]
print(arr2[2:]
#[3,4,5,6]

print(arr2[:3])
#[1,2,3]

print(arr2[::2])
#[1,3,5]

print(arr2[1::2])
#[2,4,6]

print(arr2[::-1])
#[6,5,4,3,2,1]

s='abcdefghijk'
print(s[0:3])#abc
print(s[:-3])#abcdefgh
print(s[::2])#acegik
print(s[::-1])#kjihgfedcba


Python练习题DAY1

三位数判断是否是水仙花数 

1. 输入一个数,判断是否是水仙花数

num=int(input())
if num < 100 or num > 999:
    print('请输入一个三位数')
else:
    a = num//100
    b = num%10
    c = num//10%10
    if a**3+b**3+c**3 == num:
        print(num,'是水仙花数')
    else:
        print(num,'不是水仙花数')


年月日转天数 

2.输入年月日,判断这天是这一年的第几天

year = int(input('请输入年'))
month = int(input('请输入月'))
day = int(input('请输入日'))
isLeapYear = True if (year%4==0 and year%100!=0) or year%400==0 else False
sum = 0
if month == 12:
    sum += 30
    month-=1
if month == 11:
    sum += 31
    month-=1
if month == 10:
    sum+=30
    month-=1
if month == 9:
    sum+=31
    month-=1
if month == 8:
    sum+=31
    month-=1
if month == 7:
    sum+=30
    month-=1
if month == 6:
    sum+=31
    month-=1
if month == 5:
    sum+=30
    month-=1
if month == 4:
    sum+=31
    month-=1
if month == 3:
    if isLeapYear:
        sum+=29
    else:
        sum+=28
    month-=1
if month == 2:
    sum+=31
    month-=1
sum+=day
print(sum)

#或者
 
 
import datetime
import calendar
 
year=int(input('请输入4位数字的年份:'))#获取年份
month=int(input('请输入月份1到12之间:'))#获取输入月份
day=int(input('请输入日份1到31之间:'))#获取日份
 
targetDay=datetime.date(year,month,day) # 将输入的日期专格式化成标准的日期
dayCount=targetDay-datetime.date(targetDay.year-1,12,31)#减去上一年最后一天
print('%s是%s年的第%s天。'%(targetDay,year,dayCount.days))

BMI体重身高换算 

3.BMI 体重和身高换算

计算公式为:BMI=体重(kg)/ 身高(m)²,体重正常:18.5-24.9,超重:25-29.9,一级肥胖:30-34.9

输入身高和体重,输出指数和健康情况判断

#BMI=体重/(身高x身高)

h=float(input("请输入你的身高(例如1.60m):"))
w=float(input("请输入你的体重(kg):"))
BMI=w/h**2
if BMI>35:
    print("重度肥胖")
elif BMI>=30:
    print("一级肥胖")
elif BMI>=25:
    print("超重")
elif BMI>=18.5:
    print("体重正常")
else:
    print("偏瘦")

修狗人类年龄转换 

4.我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每

一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗

相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。

编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人

类的年龄。如果用户输入负数,请显示一个提示信息。

old=int(input("请输入小狗的年纪:"))
if old<0:#如果输入的数为负数
    print("请输入正确的年龄")
elif old<=2:
    people=old*10.5
    print("小狗相当于人类年龄为:",people)
else:
    people=2*10.5+(old-2)*4
    print("小狗相当于人类的年龄为:%s"%people)

寻找最小数 

5. 编写一个程序,从4个整数中找出最小的数,并显示此数。

#先输入四个数
a=int(input("请输入a:"))
b=int(input("请输入b:"))
c=int(input("请输入c:"))
d=int(input("请输入d:"))
min=a
if min>b:
    min=b
if min>c:
    min=c
if min>d:
    min=d
print(f'{a},{b},{c},{d}四个数中最小的数为{min}')

Python练习题DAY2

打印乘法表 

1.打印9x9乘法表

i=1
while i<=9:
    j=1
    while j<=i:
        print('%dx%d=%d'%(i,j,i*j),end=' ')
        j+=1
    print()
    i+=1

找出质数 

2.找出2-100000的所有质数,优化算法,找过一次的不需要再反复判断

primes=[]
num=2
end_num=10000
while num<=end_num:
    flag=True
    for p in primes:
        if p<=num**0.5:
            if num%p==0:
                flag=False
                break
            else:
                break
    if flag:
        primes.append(num)
        print(num,end=',')
    num+=1

计算阶乘和 

3.计算1!+2!+3!+…n!

#共定义了参数n、i、total、j、k
n=int(input('请输入n'))#n等于输入的最大数值
i=1#i等于当前数值
total=0#数值总和
while i<=n:#第一层循环 计算1!+2!+……
    #如果i小于输入的最大数值
    j=1
    #使j等于1
    k=1
    #k等于本次计算的阶乘和
    while j<=i:#第二层循环 计算i!
        k*=j#k等于每次循环的j的阶乘和累计
        j+=1#j增加直至达到i的数值大小
    total+=k#加上这次循环的阶乘和
    i+=1#i的数值相加
print(total)

猜数字 

4.猜数字游戏,随机生成一个1-100以内的整数,然后让用户猜,记录用户猜的过程,在用户猜后打印结果和次数


import random
guess_nums=[]
num=random.randint(1,100)#生成1到100的随机数
print(num)#输出生成的随机数
flag=True
while flag:
    guess = int(input('请输入您猜的数字:'))#设置guess为输入的数字
    guess_nums.append(guess)#将输入的数字增加到guess_nums列表中
    if guess<num:#数值偏小
        print('数值偏小')
    elif guess>num:#数值偏大
        print('数值偏大')
    else:#数值正确
        flag=False#跳出循环
        print('猜中了,您一共猜了%d次'%len(guess_nums))
        #通过guess_nums的长度来判断一共猜了多少次
        for i in guess_nums:#输出猜测的数值
            print(i)
        break

列表和索引下标 

5.给定一个整数列表nums和一个整数目标值target,请你在该列表中找出和为目标值的索引。假设每种输入只会对应一个答案,但是数组中同一个元素在答案中不能重复出现。

nums=[3,3,5,6,7]#定义整数列表nums
target=8#定义整数目标值target
i=0
while i<len(nums):#如果i小于整数列表的长度
    r=target-nums[i]#r等于证书目标值减去列表中对应位置的索引
    follows=nums[i+1:]#follows等于剩下的数
    if r in follows:#如果剩下的数值在索引中
        print(i,follows.index(r)+i+1)#输出i的值和对应的索引下标(
    i+=1

Python练习题DAY3

不重复八位数整除 

1.用0-7组成没有重复数字的8位数,其中能够被11整除的有多少个

def isUnique(i:int)->bool:
    s=str(i)#类型转换 使s成为字符串
    if '8' in s or '9' in s:#如果存在数字8或数字9
        return False
    for c in s:
        if s.index(c)!=s.rindex(c):
            #如果字符某个字符串第一个出现的位置和最后一个出现的位置不同
            #即判断是否有相同字符
            return False#返回错误
    return True
count=0#定义count
for i in range(10234567,76543210):
    #所能组成的最大数和最小数
    if isUnique(i) and i%11==0:#验证是否满足组成8位数的条件且判断是否能被11整除
        count+=1#计算数字数量
print(count)

杨辉三角 

2.给定一个非负整数numRows,生成【杨辉三角】的前numRows行。

在【杨辉三角】中每个数就是它左上方和右上方的数的和。

输入:numRows=5

输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

from __future__ import annotations
#从future中导入annotations 有利于声明python类型列表

def generate(numRows:int)->list[list[int]]:
    r=list()#创建列表
    for i in range(numRows):#
        row=list()#row等于每一行生成的列表
        for j in range(0,i+1):#j范围为0到i
            if j==0 or j==1:#如果j等于0或者1
                row.append(1)#在列表中加入1
            else:
                row.append(r[i-1][j-1]+r[i-1][j])#上一行两个元素相加
        r.append(row)
    return r

r=generate(8)

for i in r:
    print(i)

公共前缀(*) 

3. 

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入:strs = ["flower","flow","flight"]

输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]

输出:""

解释:输入不存在公共前缀。

from __future__ import annotations

def longPrefix(strs:list[str])->str:
    length=len(strs[0])#length是第一个单词的长度
    num=len(strs)#num是单词的数量
    for i in range(length):#遍历第一个单词的每个字母
        #得到1,2,3……length-1
        c=strs[0][i]#c等于对应的字母
        for j in range(1,num):#j是从列表中1到num-1中的元素
            if i <len(strs[j])and strs[j][i]!=c:
                #首先i小于j的长度且当j中对应位置的字母不与原来相同时
                return strs[0][:i]
                #切片,返回前i个字符(即公共前缀)
        
    return strs[0]
strs=['flower','flow','flight']
print(longPrefix(strs))

字符串出勤记录 

4. 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

'A':Absent,缺勤

'L':Late,迟到

'P':Present,到场

如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

按 总出勤 计,学生缺勤('A')严格 少于两天。

学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。

如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。

示例 1:

输入:s = "PPALLP"

输出:true

解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。

示例 2:

输入:s = "PPALLL"

输出:false

解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。

def check(s:str)->bool:
    if s.count('A')<2 and s.find('LLL')==-1:
        #find函数:检查LLL字符串是否是s字符串的子串
        #如果出现A的次数小于2且没有找到连续的LLL字符串
        return True
    return False

print(check('PPPALLLP'))

数据字典括号匹配 

5. 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([)]"

输出:false

示例 5:

输入:s = "{[]}"

输出:true

def check(s:str)->bool:
    stack=[]#键:值
    dic={'(':')','[':']','{':'}'}#使用字典存储括号
    for i in s:
        if i in dic.keys():
            #key方法用于返回字典中所有键
            stack.append(i)#左括号入栈
            #stack列表中增加i
            print(stack)
        elif i in dic.values():
            #value方法用于返回字典中对应的值
            #items方法返回字典中所有的键值对(即键+值)
            if len(stack)<0 or dic.get(stack[-1])!=i:
                #如果键的长度为0或者是与右括号匹配不成功
                return False
            stack.pop()#匹配正确则右括号出栈
            print(stack)
    if len(stack)>0:#持续直到列表为空
        return False
    return True
check('{[][][][][][]))}')

Python练习题DAY4

丢骰子判断和 

1. 用一个骰子(1-6)掷10次,把结果相加刚好为40的可能性有多少种

def roll(n,s):
    if n<1 or s<n or s>n*6:#如果骰出次数小于1或者相加和小于最小值(n)或大于最大值(6n)
        return 0#返回0
    elif n==1:#如果骰出次数等于1 返回1
        return 1
    else:
        total=0
        #递归函数,total等于相加可能性的次数
        total=roll(n-1,s-1)+roll(n-1,s-2)+roll(n-1,s-3)+roll(n-1,s-4)+roll(n-1,s-6)+roll(n-1,s-5)
        return total#返回最后的可能性之和

print(roll(10,40))
#roll函数(次数,相加和)

递归回文判定

2. 用递归判定回文字符串或者回文数

def is_huiwen(s):
    if len(s)<2:#单个字母本身也是回文
        return True
    elif s[0]!=s[-1]:#如果第一位不等于最后一位,返回false
        return False
    return is_huiwen(s[1:-1])#如果第一位等于最后一位,递归调用切片

print(is_huiwen('abbba'))

递归实现x的n次幂函数 

3. 使用递归

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。

   输入:x = 2, n = 10

   输出:1024

   输入:x = 2.1, n = 3

   输出:9.261

   输入:x = 2, n = -2

   输出:0.25

def myPowHandler(x:float,n:int):
    if n==1:#如果n等于1 返回数值(1的任何数次方都等于1)
        return x
    if n%2!=0:#如果n不能被2整除 递归计算
        half=myPowHandler(x,n//2)#划分成两个更小的函数
        #//整数除法,返回不大于结果的一个最大的整数
        return half*half*x#返回两个更小的值和一个x
    else:#如果可以被2整除
        half=myPowHandler(x,n/2)
        return half*half

def myPow(x:float,n:int):
    if n==0 or x==1:#如果n等于0或者n等于1
        return 1#返回1
    if n<0:#如果n小于0
        return 1/myPow(x,abs(n))#abs函数 计算绝对值

    return myPowHandler(x,n)

myPow(2,10)

统计元音字母(*) 

4. 统计元音字母——输入一个字符串,统计处其中每个元音字母的数量,注意大小写算1种

from ast import Lambda
from functools import reduce

vowels={'a':0,'e':0,'i':0,'o':0,'u':0}#定义
def countVowel(s:str):
    r=list(filter(lambda c:c in vowels or c.lower()in vowels,s.lower()))
    #filter函数,筛选返回符合条件的新列表
    #lambda 参数列表 : 返回值 lower()字符串变小写
    #lambda c:s.lower,c in vowels or c.lower()in vowels
    #比较vowels中的元音字母(不分大小写)和s中的字母
    #filter过滤掉了除了元音字母以外的字母
    #list转换为列表
    for k in vowels.keys():
        vowels[k]=r.count(k)

countVowel('Iabckdefg') 
print(vowels)      

装饰器登录 

5. 

使用装饰器实现方法的权限校验,当用户调用方法时候,需要输入用户名和密码,只有字典中的用户才可以登录

dict = {'zhangsan':'12345','lisi':'abc123'}

dict={'zhangsan':'12345','lisi':'abc123'}
def auth(func):
    def check(*args,**kw):#**kw-关键字参数 *args-可变参数
        username=input('请输入用户名:')
        password=input('请输入密码:')
        if username in dict and dict.get(username)==password:
            #如果输入的用户名在字典中且字典中姓名的对应密码值等于输入的密码值
            r=func(*args,**kw)
            return r
        else:
            print('权限不足')
    return check

@auth
def add(a,b):
    return a+b
add(1,2)

Python练习题DAY7

 读取文件(open(r'c:\test\work.txt','r')as f:)

1. 读取c:\test\work.txt文件内容,并计算文件中单词数量,用空格划分

word_dict = {}
with open(r'c:\test\work.txt','r') as f:#open()函数 打开文件,创建一个file对象 open('文件名称','打开模式')
    lines = f.readlines()
    for line in lines:#获取文件中的单词
        words = line.replace('\n', '').lower().split(' ')#根据空格进行切片
        for word in words:#对于单词
            if word in word_dict:#如果单词已经出现过了
                word_dict[word] += 1#数量增加1
            else:
                word_dict[word] = 1#如果单词没有出现过 增加这个单词并设定初始值为1
print(word_dict)

创建二维数组(numpy.arrange(1,17).reshape(4,4)) 

2. 创建4╳4的二维数组,取值为1-16,对数组进行纵向分割打印和横向分割打印。

import numpy
arr1=numpy.arrange(1,17).reshape(4,4)
print(arr1)
print(numpy.split(arr1,4,axis=1))
print(numpy.split(arr1,4,axis=0))

文件写入姓名(open(r'e:\temp\name.txt','a')as f:) 

3. 向c:\test\name.txt内写入你的姓名,如果文件不存在创建文件,存在则追加内容,要求使用with实现文件写入。

with open(r'e:\temp\name.txt','a') as f:
    f.write('wangwu')
    #r:读取 w:写入(覆盖源文件) a:如果不存在 写入(追加)

 创建随机数数组(np.random.random([4,5]) arr.sum arr,mean axis=0/1)

4. 使用numpy创建一个4x5的随机值数组,计算横轴和纵轴的和以及均值

# 使用numpy创建一个4x5的随机值数组,计算横轴和纵轴的和以及均值
arr = np.random.random([4,5])
ax = arr.sum(axis=0)
ay = arr.sum(axis=1)
axv = arr.mean(axis=0)#行的均值
ayv = arr.mean(axis=1)#列的均值
print(arr)
print(ax,axv)
print(ay,ayv)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值