python代码课堂测验

#第一个小测验
##编写一个点名程序
问题:

  • 创建一个班级信息字典,key为学号,value为姓名;
  • 随机从班级中抽取n名同学。
    思路:
    -用pandas读取班级名单
  • 将名单中(学号,姓名)为一个元素导入列表,然后用户输入要抽取的人数,之后再列表中提取
import pandas as pd   #导入pandas包,用于读取文件
import random         #导入random包,用于产生随机数

df = pd.read_excel('C:/Users/mac/Desktop/数应191名单.xlsx') #读取文件
data = list(zip(df.iloc[:,2],df.iloc[:,3]))    #将(学号,姓名)作为一个元素导入list
f = int(input("请输入抽取的人数")) #老师输入抽取点名的人
a = random.sample(data,f)  #从列表中随机抽取f个元素
print(a)

#第二个小测试
##编写一个列表处理程序
问题:

  • 编写一个列表处理程序,使用input()函数接收一个列表,打印输出列表中所有不重复的元素

思路:

  • 使用input()函数接收一个列表,打印输出列表中所有不重复的元素
  • list1用于接受元素,list2用于接受不重复的元素

代码:

list1=[1,7,4,2,3,4,4,4,5,7,]
list2 = []
for i in list1:
    if not i in list2:
        list2.append(i)
print(list1)
print(list2)

效果图:

在这里插入图片描述
#第三个小测试
##编程求sin(x)面积代码
问题:

  • 求y=sin(x)从0到2*pi,与x轴围成的面积
    在这里插入图片描述

思路:

  • 将各小矩形的高度存放至一列表中
  • List item将各高度乘以宽度,得各矩形面积
    求和

代码:

import math  #导入数学模块
n = 200
width =2*math.pi/n          #将x区间分成100份,区间分的越小面积越接近真实值
a =[]
b =[]

for i in range(n):
	a.append(i*width)       #将取到的x值放入a列表中
for i in a:
	b.append(abs(math.sin(i)))  #求出x值对应的y值
area = sum(b)*width            #将每一个小矩形的面积加起来
print(area)

#第四个小测试
##编写冒泡排序代码
问题:

  • 对序列[1,2,6,0.3,2,0.5,-1,2.4]按从小到大顺序进行排列

思路:

  • 每一次遍历循环把最大的元素放到最后

  • 之后遍历第一位元素到第i-1位元素

代码:

list=[1,2,6,0.3,2,0.5,-1,2.4]
i=0
j=0

while i < len(list)-1:            #遍历第一位到倒数第二位
    while j < len(list)-i-1:      #遍历第一位至第(i-1)位
        if list[j] > list[j+1]:   #将临近的元素进行比较,大的往后移,每次循环结束实现将最大的一位数放到了最后一位
            list[j],list[j+1] = list[j+1],list[j]  #元素位置的转换,实现大的往后移
        j=j+1
    j=0
    i=i+1
print(list)

效果图:
在这里插入图片描述

#第五个小测试
##编程一个单词词频统计代码
问题:

  • Walden中文译名《瓦尔登湖》,是美国作家梭罗独居瓦尔登湖畔的记录,描绘了他两年多时间里的所见、所闻和所思。该书崇尚简朴生活,热爱大自然的风光,内容丰厚,意义深远,语言生动。请用Python统计小说Walden中各单词出现的频次,并按频次由高到低排序

思路:

  • 将文本字符进行切片然后放入list1中
  • 设置一个去重列表list2用于遍历文本中的单词
  • 将list2中单词提取出来到list1中统计单词出现的次数

代码:

 import string
with open('Walden.txt','r',encoding='UTF-8') as fp:
    words = fp.read().split()              #将文档里的字符串切片
    list = [word.strip(string.punctuation).lower() for word in words] #把每个单词首尾连在一起的符号去掉,大写字母统一成小写
    words_set = set(list)                   #去掉重复元素

for i in words_set:                         #遍历去重后的元素,再在未去重的words里进行单词统计
    sum = words.count(i)
    dict={i:sum}
    print(dict)

#第六个小测试
##编写一个程序demo.py

问题:

  • 要求运行该程序后,生成demo_new.py文件,其中内容与demo.py一样,但需要在每一行的后面注释上行号(#1),并且要求所有行的#垂直对齐

思路:

  • 首先统计文档中最长的那一行的长度(maxlength),然后再每行的末尾填充至最长长度
  • 最后在每行末尾添加‘#’号

代码:

filename = 'demo.py'
with open(filename, 'r', encoding='UTF-8') as fp:
    lines = fp.readlines()                             #将demo.py每一行内容记入lines中
    maxLength = len(max(lines, key=len))               #统计最长的行的长度,方便填充空格以致对齐

lines = [line.rstrip().ljust(maxLength)+'#'+str(index)+'\n' #rstrip() 删除 string 字符串末尾的指定字符(默认为空格)
    for index, line in enumerate(lines)]                    # ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串
with open(filename[:-3]+'_new.py', 'w') as fp:
    fp.writelines(lines)

#第七个测试
##编程求序列偶数个数代码
问题:

  • 自定义求序列偶数个数的函数Python函数

思路:

  • 用mod函数找到偶数然后输入到list2中

代码:

list1=[1,2,4,5,6,9,10]
list2=[]
for i in list1:
    if i%2 == 0:        #若一个数字除2余数为0时,则这个数为偶数
        list2.append(i)
print(list2)

效果:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值