python25题

1

两数之和

num1=1.5
num2=3.8

sum=num1+num2
print(f"{num1}+{num2}={sum}")

2

数字的阶乘

def jiChen(num):
    if num==1:
        return 1
    return num*jiChen(num-1)

print("6的阶乘是:{}".format(jiChen(6)))

3

求圆的面积

import math

def circle_area(r):
    return 2*math.pi*r*r

print("area of 2 is :",circle_area(2))
print("area of 3 is :",circle_area(3))
print("area of 4 is :",round(circle_area(4),2))

4

求区间内所有的素数

def is_prime(num):
    if num in (1, 2):
        return True
    for idx in range(2, num):
        if num % idx == 0:
            return False
    return True


def print_primes(beg, end):
    for num in range(beg, end + 1):
        if is_prime(num):
            print(f"{num}\tis a prime")

beg=int(input("请输入开始的整数:"))
end=int(input("请输入结尾的整数:"))

print_primes(beg,end)

5

求前N个数字的平方和

num =int(input("请输入一个整数:"))
lst=[x**2 for x in range(num+1)]
print(sum(lst))

6

计算列表中的数字和

str=input("请输入要计算的列表的元素,用逗号隔开:")
lst=[int(x) for x in str.split(',')]

def sum_list(lst):
    total=0
    for num in lst:
        total+=num
    return total

print("以上序列的和是:{}".format(sum_list(lst)))

7

输入开始值和结束值得到这个范围中的所有的偶数

beg=int(input("请输入开始的整数:"))
end=int(input("请输入结尾的整数:"))

lst=[]

for i in range(beg,end+1):
    if i%2==0:
        lst.append(i)
print(lst)
beg=int(input("请输入开始的整数:"))
end=int(input("请输入结尾的整数:"))
data = [item for item in range(beg,end+1) if item%2==0]
print(data)

8

移除列表中的多个元素

原始列表[2,3,5,8,4,6]

移除[2,3]

返回[5,8,4,6]

lst1=[3,5,7,9,11,13]
lst2=[7,11]
print(lst1)

for num in lst2:
    if num in lst1:
        lst1.remove(num)

print(lst1)

9

列表的去除重复元素

第一种方法:

def get_unique_list(lst):
    lsta=[]
    for item in lst:
        if item not in lsta:
            lsta.append(item)
    return lsta

lst=list([10,20,30,10,20])
print(f"sourec list={lst},unique_list=:",get_unique_list(lst))

第二种方法:

print(f"sourec list={lst},unique_list=:",list(set(lst)))
#这里利用set不包含重复元素的特性去除了列表中的重复元素后在作为参数创建一个新的列表

10

列表的排序

list1=[20,50,10,40,30]
list2=["bb","ee","aa","dd","cc"]

print(list1,id(list1))
list1.sort()#永久修改了原列表的排序
print(list1,id(list1))
list1.sort(reverse=True)
print(list1,id(list1))


print(list2,id(list2))
list3=sorted(list2)
print(list2,id(list2))
print(list3,id(list3))
list3=sorted(list2,reverse=True)
print(list3,id(list3))
lst=['aa','hh','bb','jj','dd','ee']
ret=[]
for item in lst:
    if item not in ret:
        ret.append(item)
print(ret)

ret.sort(key=lambda x:x,reverse=True)
print(ret)

11

学生成绩排序

第一种方法

lst = [{"sno": 101, "sname": "张三", "sgrade": 88},
       {"sno": 102, "sname": "李四", "sgrade": 77},
       {"sno": 103, "sname": "王五", "sgrade": 99},
       {"sno": 104, "sname": "赵2", "sgrade": 66},
       ]


def listsort(lst):
    templist = []
    newlist = []
    for item in lst:
        templist.append(item["sgrade"])
    templist.sort(reverse=True)

    for i in range(len(templist)):
        for item in lst:
            if item["sgrade"] == templist[i]:
                newlist.append(item)

    return newlist


print(listsort(lst))

第二种方法

newlist=sorted(lst,key=lambda x:x["sgrade"],reverse=True)

12

读取成绩文件排序数据

score文件

101,小张,99
102,小王,98
103,小李,77
104,小赵,67
105,小陈,59
106,小程,100
107,小罗,78
108,小党,66
109,小杨,55
110,小史,44
111,小周,33
def read_file():
    result=[]
    with open("./score") as fin:
        for line in fin:
            line = line[:-1]#line是字符串
            result.append(line.split(","))#split将字符串分隔后组成列表
    return result#列表套列表


def sort_grades(datas):
    datas=sorted(datas,key=lambda x:int(x[2]),reverse=True)
    return datas


def write_file(datas):
    with open("./newscore","w") as fout:
        for data in datas:
            fout.write(",".join(data)+'\n')



#读取文件
datas = read_file()
print(datas)
#排序数据
datas= sort_grades(datas)
print(datas)
print("测试中文")
#写出文件
write_file(datas)
106,小程,100
101,小张,99
102,小王,98
107,小罗,78
103,小李,77
104,小赵,67
108,小党,66
105,小陈,59
109,小杨,55
110,小史,44
111,小周,33

13

统计学生成绩中的最高分最低分平均分

# 第一种方法

filename="./score"
lst1 = []
def search_score(filename):
    lst=[]
    temp=0
    with open(filename) as fin:#打开文件
        for line in fin:
            line=line[:-1]#去除每行末尾的换行符
            lst.append(line.split(","))#将读取的内容添加到列表

    lst.sort(key=lambda x:int(x[2]))#排序
    print(f"lst={lst}")

    for item in lst:
        temp+=int(item[2])#所有分数相加
    print(temp)

    lst1.append(lst[0][2])
    lst1.append(lst[len(lst)-1][2])

    lst1.append(round(temp*1.0/len(lst),2))#保留两位小数

    return lst1

search_score(filename)
print(lst1)

#第二种方法
filename = "./score"
lst1 = []


def search_score(filename):
    score = []
    with open(filename) as fin:
        for line in fin:
            line = line[:-1]
            s = line.split(",")#这是一个分割后的列表
            score.append(int(s[-1]))

    #score.sort()
    #mins=score[0]
    #maxs=score[len(score)-1]
    mins=min(score)
    maxs=max(score)
    avgs=round(sum(score)/len(score),2)

    return mins,maxs,avgs

mins,maxs,avgs=search_score(filename)#一次可以返回多个值
print(f"mins={mins},maxs={maxs},avgs={avgs}")

14

统计英文文章中每个单词出现的次数

Joy in living comes from having fine emotions, trusting them, giving
them the freedom of a bird in the open. Joy in living can never be
assumed as a pose, or put on from the outside as a mask. People who
have this joy do not need to talk about it; they radiate it. They just
live out their joy and let it splash its sunlight and glow into other
lives as naturally as bird sings
filename = "./score"
dic = {}

def words(path):
    with open(path) as fin:
        for line in fin:
            line = line[:-1]
            words = line.split()#文件的每一行都按空格分割成一个个单词,这是列表
            for word in words:#遍历这个列表
                if word not in dic:#如果单词不在字典中
                    dic[word] = 0#单词数置0
                dic[word] += 1#单词的value++

words(filename)

dic1=sorted(dic.items(),key=lambda x:x[1],reverse=True)#排序
print(dic1[:3])#排序后的前三项

15,

统计目录下所有文件的大小

重点掌握:

os.path.getsize(file):获取文件大小

os.path.listdir(path):列出指定目录下所有文件包括目录

os.path.isfile(file):判断是不是文件

os.path.isdir()

import os
print(os.path.getsize("./score"))#获取指定文件的大小

sum_size=0
for file in os.listdir("."):#列出指定目录下所有文件包括目录
    if os.path.isfile(file):#过滤出文件
        sum_size+=os.path.getsize(file)

print(f"all files size={sum_size/1000}")#返回KB

#os.path.getsize(文件路径)  返回单个文件的大小
#os.listdir(目录路径)  列出目录下的内容
#os.path.isfile(目录项) 判断是不是文件 

16,

按文件名整理文件夹

重点掌握:

os.path.splitext(“filepath”):获取文件扩展名

print (os.path.splitext("/path/to/aaa.mp3"))
#('/path/to/aaa', '.mp3')#返回的是一个元组,第二项是后缀名
import os
import shutil

path = "./dir"

for file in os.listdir(path):  # 遍历目录
    ext = os.path.splitext(file)[1]  # 获取文件扩展名 .mp3
    ext = ext[1:]  # 去掉.
    if not os.path.isdir(f"{path}/{ext}"):  # 如果目录不存在
        os.mkdir(f"{path}/{ext}")  # 创建目录

    source_path = f"{path}/{file}"  # 原路径
    target_path = f"{path}/{ext}/{file}"  # 目标路径

    shutil.move(source_path, target_path)  # 移动文件

    print(file, ext)

17,

实现不同文件的关联

# PYTHON
# TEST
# 时间 :2023/4/16 21:30

course_teacher_map={}

with open("./teacher",encoding="utf-8") as fin:
    for line in fin:
        line=line[:-1]#去掉末尾换行符
        #line=line.rstrip()
        course,teacher=line.split(",")#分割列表
        course_teacher_map[course]=teacher#给字典添加key value


with open("./score",encoding='utf-8') as fin:#打开分数文件
    with open("./newfile", "w", encoding="utf-8") as fnew:#打开要写入的新文件
        for line in fin:
            line=line.rstrip()#从分数文件中读取一行,并删除末尾的换行符
            course,sno,sname,sgrade=line.split(",")#将这一行数据拆分

            teacher=course_teacher_map[course]#在字典中查找老师姓名
            lst=[course,teacher,sno,sname,sgrade]#将数据放入列表
            str=",".join(lst)#将列表的每一位用逗号黏贴
            str+="\n"#添加每一行的换行符
            print(str)
            fnew.write(str)#将新行写入文件



print(course_teacher_map)

##第二种方法
course_teacher_map={}

with open("./teacher",encoding="utf-8") as fin:
    for line in fin:
        line=line[:-1]#去掉末尾换行符
        #line=line.rstrip()
        course,teacher=line.split(",")#分割列表
        course_teacher_map[course]=teacher#给字典添加key value


with open("./score",encoding='utf-8') as fin:#打开分数文件
    with open("./newfile", "w", encoding="utf-8") as fnew:#打开要写入的新文件
        for line in fin:
            line=line.rstrip()#从分数文件中读取一行,并删除末尾的换行符
            teacher=course_teacher_map[line[:2]]
            line=line[:3]+teacher+","+line[3:]+"\n"
            print(line)
            fnew.write(line)

print("="*20)
print(course_teacher_map)

18,

计算每个班级的最高分最低分平均分

dic={}
with open("./score",encoding="utf-8") as fin:
    for line in fin:
        line=line.rstrip()
        course,sno,sname,sgrade=line.split(",")#将列表中的值赋值给每一个对象
        if course not in dic:#如果字典没有这个key
            dic[course]=[]#value为空列表
        dic[course].append(int(sgrade))#添加列表元素

print(dic)

for course,grade in dic.items():#遍历字典的键值对
    print(course,
          max(grade),
          min(grade),
          sum(grade)/len(grade)
          )

19,

TXT文件的额合并

import os

lst=[]
data_dir="./dir/txt"
for file in os.listdir(data_dir):
    filepath=data_dir+"/"+file#组合文件路劲
    if os.path.isfile(filepath) and file.endswith(".txt"):#判断是不是文件而且.txt结尾
        with open(filepath) as fin:
            lst.append(fin.read())#读取整个文件内容
#每个文件结束都添加以下字符串
final_content="\n==================new file===================\n".join(lst)

with open("./dir/txt/sumtxt","w") as fout:
    fout.write(final_content)#写文件

20,

统计学生兴趣

"""
小张 篮球,羽毛球
小王 篮球,乒乓球
小李 篮球,台球
小赵 篮球,足球,台球
小马 乒乓球,台球
小钱 羽毛球,足球
小孙 乒乓球,台球
小强 羽毛球
"""
dic=dict({})
filepath="./student_like"
with open(filepath,encoding="utf-8") as fin:
    for line in fin:
        line=line.rstrip()#去掉末尾换行符
        sname,likes=line.split(" ")#按空格拆分
        likes_list=likes.split(",")#按逗号拆分
        for like in likes_list:
            if like not in dic:#字典里没有这个key
                dic[like]=0#添加key并将value设置为0
            dic[like]+=1#value值增加

print(dic)
#{'篮球': 4, '羽毛球': 3, '乒乓球': 3, '台球': 4, '足球': 2}

21

获取当前的日期和时间

import datetime

curr_datetime=datetime.datetime.now()#获取当前系统时间

print(curr_datetime,type(curr_datetime))
#2023-04-17 08:36:04.821648 

#将class<> 类型转化为str
str_time=curr_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("currenttime:",str_time)

print("year:",curr_datetime.year)
print("month:",curr_datetime.month)
print("day:",curr_datetime.day)
print("hour:",curr_datetime.hour)
print("minute:",curr_datetime.minute)
print("second:",curr_datetime.second)

22

计算两个日期相隔多少天

import datetime
birthday="1987-05-23"
birthday_date=datetime.datetime.strptime(birthday,"%Y-%m-%d")#将字符串转换成datetime对象
print(birthday_date,type(birthday_date))
#1987-05-23 00:00:00 

curr_datatime=datetime.datetime.now()#系统当前时间
print(curr_datatime,type(curr_datatime))
#2023-04-17 08:52:55.457548 

minus_datetime=curr_datatime-birthday_date#两个datetime对象直接相减
print(minus_datetime,type(minus_datetime))
#13113 days, 8:54:25.693459 

print(minus_datetime.days)#13113

23,

计算任意日期七天前的日期

import datetime

def get_diff_days(pdate,days):
    pdate_obj=datetime.datetime.strptime(pdate,"%Y-%m-%d")#将输入的日期转化为datetime对象
    time_gap=datetime.timedelta(days=days)
    result=pdate_obj-time_gap
    return result.strftime("%Y-%m-%d")#再将datetime对象转为字符串形式返回

print(get_diff_days("2023-4-17",1))
print(get_diff_days("2023-4-1",7))
print(get_diff_days("2023-4-10",3))
print(get_diff_days("2023-4-1",2))

24

计算日期范围内的所有日期

100

列表转字典

keys=['a','b','c']
values=[1,2,3,4]

print(dict(zip(keys,values)))

你可能感兴趣的:(python25题)