入门小案例
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的区别:
-
def创建的方法是有名称的,而Lambda表达式没有,可以立刻传递;Python
Lambda表达式会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。 -
Python
Lambda只是一个表达式,def是一个语句。Lambda表达式运行起来像一个函数,当被调用时创建一个框架对象。Lambda能够出现在Python语法不允许def出现的地方。 -
Lambda表达式“:”后面,只能有一个表达式,def则可以有多个。Lambda表达式内部只能包含一行代码,而命名函数内对此无限制。
-
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)
)