python实战编程小案例-----更新中


code templates

# -*- coding: utf-8 -*-  
#可可爱爱小七月

数字的阶乘

import math


def get_jiecheng(number):
    result = 1
    while number > 0:
        result *= number
        number -= 1
    return result


print("jiecheng 3=", get_jiecheng(6))

圆的面积

def circle_area(r):
    # 只保留两位小数,round函数是python中的内置函数,四舍五入
    return round(math.pi * r * r)


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

打出区间里面的素数

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


def print_prime(begin, end):
    # for  inrange 遍历
    for i in range(begin, end + 1):
        if is_prime(i):
            print(f"{i}是一个素数")


begin = 11
end = 25
print_prime(begin, end)

求前N个数字的平方和

def pingfang(n):
    sum = 0
    for number in range(1, n + 1):
        sum += number * number
    print(f"前{n}个数字平方和{sum}")


pingfang(4)
pingfang(5)
pingfang(3)
pingfang(10)

计算列表数字的和

def sum_of_list(param_list):
    total = 0
    for i in param_list:
        total += i
    return total


list1 = [1, 2, 3]
list2 = [1, 2, 3]

input=[12, 23, 45]
print("input列表数字的和", sum_of_list(input))
print("input列表数字的和", sum(input))

列表去重

# 去重列表

a = [1, 1, 4, 4, 5, 7, 8]
def quchong(b):
    c = []
    for item in b:
        if item not in c:
            c.append(item)
    return c


print(f"原始列表:{a}, 去重后列表:", quchong(a))

简单对列表排列:sort,sorted:

默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。

#简单对列表排序

d = [5, 8, 3, 45, 32, 566]
#sort改变原数组,默认升序
#d.sort(reverse=True):是否颠倒,True,是(降序)
d.sort()
#sorted返回一个新数组
#e = sorted(d, reverse=True)
e = sorted(d)
print(f"原来的列表变为:{d}, 返回新列表为:{e}")

怎样实现学生成绩的排序 拉姆达 lambda

Lambda
表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。

而且Lambda表达式非常好用,可以让代码简单、简洁。

Lambda表达式与函数def的区别:

  1. def创建的方法是有名称的,而Lambda表达式没有,可以立刻传递;Python
    Lambda表达式会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。

  2. Python
    Lambda只是一个表达式,def是一个语句。Lambda表达式运行起来像一个函数,当被调用时创建一个框架对象。Lambda能够出现在Python语法不允许def出现的地方。

  3. Lambda表达式“:”后面,只能有一个表达式,def则可以有多个。Lambda表达式内部只能包含一行代码,而命名函数内对此无限制。

  4. Lambda表达式可以直接作为Python列表或Python字典的成员,返回Lambda表达式中最后一个表达式的值。

#怎样实现学生成绩的排序
#复杂列表,元素是字典或者元组
stu = [
    {"sno": 101, "sname": "校长", "sgrade": 88},
    {"sno": 102, "sname": "校长2", "sgrade": 98},
    {"sno": 103, "sname": "校长3", "sgrade": 68},
    {"sno": 104, "sname": "校长4", "sgrade": 78}
]
students_sort = sorted(stu, key=lambda x: x["sgrade"])

print(f"原始学生列表为{stu}")
#升序
print(f"升序排序后列表为: {students_sort}")
# 降序,拉姆达:key=lambda x: x["sgrade"],x代表列表中每一个元素, x["sgrade"]元素中某一个key
students_sort = sorted(stu, key=lambda x: x["sgrade"], reverse=True)
print(f"降序排序后列表为: {students_sort}")

读取文件

新建一个.txt文件

#读取成绩文件的排序数据
#输入文件:
# 学号、姓名、成绩
# 读取文件 排列数据 写出文件
def read_file():
    result = []
    #fin
    with open("./student_grade_input.txt") as ff:
        for line in ff:
           # 每行去掉末尾换行符,剩下的赋值给line
            line = line[:-1]
            result.append(line.split(","))
    return  result

datas = read_file()
print(f"read_file:", datas)

对文件数据进行排序

# 对文件数据进行排序

def compute_score():
    result = []
    # 打开文件
    with open("./student_grade_input.txt") as fin:
        for line in fin:
            # 删除空格
            line = line[:-1]
            # 分隔符加入列表【】
            fields = line.split(",")
            result.append(int(fields[-1]))
    max_score = max(result)
    min_score = min(result)
    avg_score = round(sum(result) / len(result), 2)
    return max_score, avg_score, min_score


max_score, avg_score, min_score = compute_score()
print(f"max_score:{max_score},avg_score:{avg_score},min_score:{min_score}")

计算 短文中出现最多的英文单词

#计算 短文中出现最多的英文单词
word_count = {}
with open("English.txt", encoding='UTF-8') as fin:
    for line in fin:
        line = line[:-1]
        words = line.split()
        for word in words:
            if word not in word_count:
                word_count[word] = 0
            word_count[word] +=1
    print(f"words:{word_count}")
#开始排序
word_countnew = sorted(word_count.items(), key=lambda x: x[1], reverse=True)[:10]
# word_count.sort()
print(f"words:{word_countnew}")

获取单个文件大小

import os
#获取文件大小字节为单位
print(os.path.getsize("English.txt"))
#遍历path为当前目录下所有文件,os.listdir返回的可能是目录,所以要判断是否是文件
sum_size = 0
for file in os.listdir("."):
    if os.path.isfile(file):
        print(file)
        sum_size += os.path.getsize(file)
#字节转KB
print("all file of dir:", sum_size/1000)

根据文件类型将文件进行分类

# -*- coding: utf-8 -*-  
# 可可爱爱小七月
import os
import shutil

dir = "./arrage_dir"
# 遍历模块所有文件  dir显示文件列表;os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
for a in os.listdir(dir):
    #获取后缀名
    ext = os.path.splitext(a)[1]
    ext = ext[1:]
    #如果没有这个文件目录
    if not os.path.isdir(f"{dir}/{ext}"):
        os.mkdir(f"{dir}/{ext}")
   source  =f"{dir}/{a}"
   target  =f"{dir}/{ext}/{a}"
    #移动文件位置,shell utility
    shutil.move(source, target)
    print(a, ext)

递归搜索目录找出最大的文件

# -*- coding: utf-8 -*-  
# 可可爱爱小七月
import os
#目录(当前目录下的文件夹,),子目录(当前目录下的文件夹的文件夹),当前目录下的普通文件(当前目录下的文件夹的文件和当前目录下的文件)
#递归搜索目录找出最大的文件
#输出所有文件   获取文件大小   放进列表中  [1]倒序排序
search_dir = "d:\FreeIME_ths"
result_files = []
for a, b, c in os.walk(search_dir):
    print(f"{b}")
    for file  in c:
        if file.endswith(".txt"):
            file_path = f"{a}/{file}"
            print(f"{file_path}")

            result_files.append((file_path, os.path.getsize(file_path)))
print(sorted(result_files,
             key=lambda X:X[1],
             reverse=True)[:10])

处理文件的最高分最低分

# -*- coding: utf-8 -*-  
# 可可爱爱小七月
#记录每个课程的最高分\最低分\平均分
course_grade = {}

with open("student_grade_input.txt", encoding="utf-8") as fin:
    for line in fin:
        line = line[:-1]
        course, sno, name, grade = line.split(",")
        if course not in course_grade:
            course_grade[course] = []
            #添加列表
        course_grade[course].append(int(grade))
print(course_grade)
#成绩的数目len(grade)
for course, grade in course_grade:
    print(
        course,
        min(grade),
        max(grade),
        sum(grade) / len(grade)
    )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值