目录
-
3.程序基本结构
1)编程实现摄氏度转换华氏度或华氏度转换摄氏度(结果保留2位小数)。
提示:
摄氏度=(华氏度-32)/1.8
华氏度=1.8*摄氏度+32
运行后若输入:50C
则结果输出:122.00F
运行后若输入:50F
则结果输出:10.00C
运行后若输入:50
则结果输出:输入格式错误
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
import re
in_c=input()
tmp=re.findall(r'\d+',in_c)
tmp=int(tmp[0])
if re.match(r'\d+[C]{1}',in_c):
print('{:.2f}'.format(tmp*1.8+32),end='')
print('F')
elif re.match(r'\d+[F]{1}',in_c):
print('{:.2f}'.format((tmp-32)/1.8),end='')
print('C')
else:
print('输入格式错误')
"""】"""
"""End"""
2)某同学每7天工作5天然后休息2天,若该同学初始水平值为1.0,每工作一天水平值增加率为N,不工作时水平值不变,编程输入增加率为N,求该同学365天后的水平值S(结果保留2位小数)。
运行后若输入:0.005
则结果输出:3.68
运行后若输入:0.01
则结果输出:13.42
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
def work(n):
n %=7
if(1<=n)&(n<=5):
return True
else:
return False
N=float(input())
m=1.0
for i in range(1,366):
if work(i):
m+=(m*N)
else:
continue
print('{:.2f}'.format(m))
"""】"""
"""End"""
3)编程:输入一个5位数字,判断这个数字是不是回文数。
运行后若输入:12345
则结果输出:不是回文数
运行后若输入:12321
则结果输出:是回文数
运行后若输入:1321
则结果输出:输入有误
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
in_s=input()
s_list=list(in_s)
s_list_rev=list(in_s)
s_list.reverse()
if len(s_list)!=5:
print("输入有误")
elif s_list==s_list_rev:
print("是回文数")
else:
print("不是回文数")
"""】"""
"""End"""
4)编程:输入一个表示月份的数字(1-12),输出对应的月份字符串名称。
运行后若输入:2
则结果输出:二月
运行后若输入:10
则结果输出:十月
运行后若输入:15
则结果输出:输入有误
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
mon=int(input())
if mon==1:
print('一月')
elif mon==2:
print('二月')
elif mon==3:
print('三月')
elif mon==4:
print('四月')
elif mon==5:
print('五月')
elif mon==6:
print('六月')
elif mon==7:
print('七月')
elif mon==8:
print('八月')
elif mon==9:
print('九月')
elif mon==10:
print('十月')
elif mon==11:
print('十一月')
elif mon==12:
print('十二月')
else:
print('输入有误')
"""】"""
"""End"""
5)编程计算成绩等级。
提示:
90及以上为优秀,80及以上为良好,70及以上为中,60以上为及格,否则不及格。
运行后若输入:95
则结果输出:优秀
运行后若输入:85
则结果输出:良好
运行后若输入:75
则结果输出:中
运行后若输入:65
则结果输出:及格
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
mon=int(input())
if mon>=90:
print('优秀')
elif mon>=80:
print('良好')
elif mon>=70:
print('中')
elif mon>=60:
print('及格')
else:
print('不及格')
"""】"""
"""End"""
6)编程:输入两个整数,输出较小的数。
运行后若输入:4 9
则结果输出:4
运行后若输入:12 3
则结果输出:3
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
x,y=map(int,input().split())
if x<y:
print(x)
else:
print(y)
"""】"""
"""End"""
7)编程:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。输入n,输出小于n的所有质数。
运行后若输入:4
则结果输出:2 3
运行后若输入:10
则结果输出:2 3 5 7
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
n=int(float(input()))
flag=0
flag_space=0
for i in range(2,n+1):
for j in range(2,i):
if i%j==0:
flag=1
if flag==0:
if flag_space==0:
print(i,end='')
flag_space=1
else:
print(' '+str(i),end='')
else:
flag=0
"""】"""
"""End"""
-
4.组合数据类型
1)编程输入整数1~7,对应显示星期一~星期日。
运行后若输入:2
则结果输出:星期二
运行后若输入:4
则结果输出:星期四
运行后若输入:7
则结果输出:星期日
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
dic={'1':'星期一',\
'2':'星期二',\
'3':'星期三',\
'4':'星期四',\
'5':'星期五',\
'6':'星期六',\
'7':'星期天'}
print(dic[input()])
"""】"""
"""End"""
2)编程输入两个字符串,转换成对应的集合存于集合变量a和b中(不能存其它变量),然后求这两集合的交集并显示结果。
运行后若输入:123 24
则结果输出:
{'1', '2', '3'}&{'2', '4'}={'2'}
运行后若输入:1234 24
则结果输出:
{'1', '2', '3', '4'}&{'2', '4'}={'2', '4'}
说明:
运行结果中集合元素显示的顺序不考虑。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
a,b=map(set,input("").split())
c=a&b
print('{}&{}={}'.format(a,b,c))
"""】"""
"""End"""
3)编程输入整数N,生成N个[0,100]的随机整数作为成绩并显示,然后求N个成绩的平均成绩并显示结果(保留两位小数)。
运行后若输入:3
则结果输出:
45,100,39,平均成绩为61.33
运行后若输入:5
则结果输出:
45,17,97,47,36,平均成绩为48.40
说明:
运行结果中随机整数成绩及平均成绩具体数值不考虑,只需保证生成随机数的范围、个数、结果精度及显示格式。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
from random import *
"""【"""
import random
N=int(input())
sum=0
for i in range(0,N):
r=random.randint(0,100)
sum+=r
print(r,end=',')
print('平均成绩为','{:.2f}'.format(sum/N),sep='')
"""】"""
"""End"""
4)输入一个正整数n,编程输出正整数n的位数,并以列表形式输出各位数字。
运行后若输入:12345
则结果输出:5 [1, 2, 3, 4, 5]
运行后若输入:2573
则结果输出:4 [2, 5, 7, 3]
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
inNum=int(input())
count=0
ls=[]
while inNum>=1:
count +=1
ls.append(inNum%10)
inNum=int(inNum/10)
ls.reverse()
print(count,ls)
"""】"""
"""End"""
5)编程:对下文进行词频统计,输入一个整数N,输出前N个高频词语(不考虑单字词,每个词6个字符宽度且右对齐,词频2位宽度且右对齐,其中麝月是一个词)。
宝玉听了这话,公然又是一个袭人.因笑道:“我在这里坐着,你放心去罢。”麝月道:“你既在这里,越发不用去了,咱们两个说话顽笑岂不好?”宝玉笑道:“咱两个作什么呢?怪没意思的,也罢了,早上你说头痒,这会子没什么事,我替你篦头罢。”麝月听了便道:“就是这样。”说着,将具镜匣搬来,卸去钗钏,打开头发,宝玉拿了篦子替他一一的梳篦.只篦了五下,只见晴雯忙忙走进来取钱.一见了他两个,便冷笑道:“哦,交杯盏还没吃,倒上头了!”宝玉笑道:“你来,我也替你篦一篦。”晴雯道:“我没那么大福。”说着,拿了钱,便摔帘子出去了.
运行后若输入:
2
则结果输出:
宝玉 4
两个 3
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
"""】"""
"""End"""
import jieba
txt='宝玉听了这话,公然又是一个袭人.因笑道:“我在这里坐着,你放心去罢。”麝月道:“你既在这里,越发不用去了,咱们两个说话顽笑岂不好?”宝玉笑道:“咱两个作什么呢?怪没意思的,也罢了,早上你说头痒,这会子没什么事,我替你篦头罢。”麝月听了便道:“就是这样。”说着,将具镜匣搬来,卸去钗钏,打开头发,宝玉拿了篦子替他一一的梳篦.只篦了五下,只见晴雯忙忙走进来取钱.一见了他两个,便冷笑道:“哦,交杯盏还没吃,倒上头了!”宝玉笑道:“你来,我也替你篦一篦。”晴雯道:“我没那么大福。”说着,拿了钱,便摔帘子出去了.'
jieba.add_word('麝月')
words=jieba.lcut(txt)
dic={}
for word in words:
if len(word)>1:
dic[word]=dic.get(word,0)+1
ls=list(dic.items())
ls.sort(key=lambda x:x[1],reverse=True)
n=int(input())
for i in range(0,n):
x=ls[i]
print('{0:>6}{1:2}'.format(x[0],x[1]))
-
5.函数
1)编程实现happy()函数功能,运行后输出结果如下。
运行后若输入:
(没有输入)
则结果输出:
Happy birthday to you!
Happy birthday to me!
Happy birthday to make!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
def happy(name=None):
if name is None:
print("Happy birthday to you!")
else:
print(f"Happy birthday to {name}!")
"""】"""
happy()
happy("me")
happy("make")
"""End"""
2)用递归实现求阶乘函数fact(n)的功能,即求1*2*……*n,运行后输出结果如下。
运行后若输入:
5
则结果输出:
120
运行后若输入:
6
则结果输出:
720
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
def fact(n):
if n == 0 or n == 1:
return 1
else:
return n * fact(n - 1)
"""】"""
n=int(input(""))
print(fact(n))
"""End"""
3)编程:输入年月日,输出英文格式的日期(“月 日,年”)和星期。
运行后若输入:2020 10 8
则结果输出:October 08,2020 Thursday
datetime的strftime(…)使用的格式字符
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
from datetime import datetime
year, month, day = map(int, input().split())
date = datetime(year, month, day)
formatted_date = date.strftime("%B %d,%Y")
weekday = date.strftime("%A")
print(f"{formatted_date} {weekday}")
"""】"""
"""End"""
-
6面向对象
1)定义求两个数的加法类NumberAdd,通过__init__()方法初始化两个数,定义一个普通方法add(),计算两个数的和。
运行后若输入:
4 5
则结果输出:
4+5=9
运行后若输入:
6 7
则结果输出:
6+7=13
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
class NumberAdd:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
"""】"""
if __name__ == '__main__' :
a,b=map(int,input().split())
n=NumberAdd(a,b) #创建对象并初始化
print("{0}+{1}={2}".format(a,b,n.add()))#显示两个数的和
"""End"""
2)定义长方形类Rectangle,在构造方法中设置私有实例变量宽__width和高__height;定义getwidth()、setwidth()、delwidth()方法分别用于读取宽、设置宽、删除宽;定义getheight()、setheight()、delheight()方法分别用于读取高、设置高、删除高;定义area()用于求长方形的面积。
运行后若输入:
3 4
则结果输出:
3*4=12
4*5=20
未定义宽,未定义高
运行后若输入:
6 7
则结果输出:
6*7=42
7*8=56
未定义宽,未定义高
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
class Rectangle: #定义长方形类
"""【"""
def __init__(self, width=0, height=0):
self.__width = width
self.__height = height
def getwidth(self):
return self.__width
def setwidth(self, width):
self.__width = width
def delwidth(self):
del self.__width
def getheight(self):
return self.__height
def setheight(self, height):
self.__height = height
def delheight(self):
del self.__height
def area(self):
return self.__width * self.__height
"""】"""
a,b=map(int,input().split())
r1=Rectangle(a,b)
print('{}*{}={}'.format(r1.getwidth(),r1.getheight(),r1.area()))#计算面积
r2=Rectangle() #创建对象,用默认值初始化实例
r2.setwidth(a+1) #设置宽
r2.setheight(b+1) #设置高
print('{}*{}={}'.format(r2.getwidth(),r2.getheight(),r2.area()))#计算面积
r2.delwidth()
try:
print(r2.getwidth(),end='')
except:
print('未定义宽,',end='')
r2.delheight()
try:
print(r2.getheight(),end='')
except:
print('未定义高',end='')
"""End"""
3)已知长方形类Rectangle,在构造方法中有私有实例变量宽__width和高__height,有area()方法用于求长方形的面积,请用@property装饰器定义属性width及其相应方法分别用于读取宽、设置宽、删除宽;用@property装饰器定义属性height及其相应方法分别用于读取高、设置高、删除高。
运行后若输入:
3 4
则结果输出:
3*4=12
4*5=20
未定义宽,未定义高
运行后若输入:
6 7
则结果输出:
6*7=42
7*8=56
未定义宽,未定义高
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
class Rectangle: #定义长方形类
"""【"""
def __init__(self, width=0, height=0):
self.__width = width
self.__height = height
@property
def width(self):
return self.__width
@width.setter
def width(self, value):
self.__width = value
@width.deleter
def width(self):
del self.__width
@property
def height(self):
return self.__height
@height.setter
def height(self, value):
self.__height = value
@height.deleter
def height(self):
del self.__height
"""】"""
def area(self): #定义计算面积的方法area()
return self.__width * self.__height #按设置的宽、高计算面积
def __init__(self, width=0, height=0): #定义构造方法
self.__width = width #创建实例变量,宽
self.__height = height #创建实例变量,高
a,b=map(int,input().split())
r1=Rectangle(a,b)
print('{}*{}={}'.format(r1.width,r1.height,r1.area())) #计算面积
r2=Rectangle() #创建对象,用默认值初始化实例
r2.width=a+1 #设置宽
r2.height=b+1 #设置高
print('{}*{}={}'.format(r2.width,r2.height,r2.area())) #计算面积
del r2.width
try:
print(r2.width,end='')
except:
print('未定义宽,',end='')
del r2.height
try:
print(r2.height)
except:
print('未定义高')
"""End"""
4)已知长方形类Rectangle,在构造方法中有私有实例变量宽__width和高__height,有area()方法用于求长方形的面积,请用property函数定义属性width及其相应方法分别用于读取宽、设置宽、删除宽;用property函数定义属性height及其相应方法分别用于读取高、设置高、删除高。
运行后若输入:
3 4
则结果输出:
3*4=12
4*5=20
未定义宽,未定义高
运行后若输入:
6 7
则结果输出:
6*7=42
7*8=56
未定义宽,未定义高
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
class Rectangle: #定义长方形类
"""【"""
def getwidth(self):
return self.__width
def setwidth(self, width):
self.__width = width
def delwidth(self):
del self.__width
width = property(fget=getwidth, fset=setwidth, fdel=delwidth, doc='宽度属性')
def getheight(self):
return self.__height
def setheight(self, height):
self.__height = height
def delheight(self):
del self.__height
height = property(fget=getheight, fset=setheight, fdel=delheight, doc='高度属性')
"""】"""
def area(self): #定义计算面积的方法area()
return self.__width * self.__height #按设置的宽、高计算面积
def __init__(self, width=0, height=0): #定义构造方法
self.__width = width #创建实例变量,宽
self.__height = height #创建实例变量,高
a,b=map(int,input().split())
r1=Rectangle(a,b)
print('{}*{}={}'.format(r1.width,r1.height,r1.area())) #计算面积
r2=Rectangle() #创建对象,用默认值初始化实例
r2.width=a+1 #设置宽
r2.height=b+1 #设置高
print('{}*{}={}'.format(r2.width,r2.height,r2.area())) #计算面积
del r2.width
try:
print(r2.width,end='')
except:
print('未定义宽,',end='')
del r2.height
try:
print(r2.height)
except:
print('未定义高')
"""End"""
5)已知定义人的类Person,请完成:1.定义学生的类Stu并继承人的类Person;2.重写构造函数,调用基类构造函数初始化姓名xm和性别xb,增加定义实例成员变量年龄age;3.重写成员函数show(),调用基类show()显示姓名xm和性别xb信息,增加显示实例成员变量年龄age信息。
运行后若输入:
张三 男
李四 女 19
则结果输出:
姓名:张三,性别:男
李四 女 19
姓名:王五,性别:?,年龄:29
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
#定义人的类
class Person(object):#继承object,它是所有类的基类、父类
def __init__(self,xm,xb):#构造函数(姓名,性别)
self.xm=xm
self.xb=xb
def show(self):#显示人的信息
print('姓名:{},性别:{}'.format(self.xm,self.xb),end='')
#定义学生的类
"""【"""
class Stu(Person):
def __init__(self, xm, xb, age):
super().__init__(xm, xb)
self.age = age
def show(self):
super().show()
print(',年龄:{}'.format(self.age), end='')
"""】"""
a,b=input().split()#张三 男
p1=Person(a,b)
p1.show()#姓名:张三,性别:男
print()
a,b,c=input().split()#李四 女 19
s1=Stu(a,b,int(c))#调用重写的构造函数,增加了成员变量年龄age=19
print(s1.xm,s1.xb,s1.age)#增加年龄信息:李四 女 19
s1.xm,s1.xb,s1.age=('王五','?',int(c)+10)#修改学生对象s1的成员变量值
s1.show()#显示:姓名:王五,性别:?,年龄:29,体现学生增加的年龄信息
"""End"""
-
7.文件操作
1)读取文本文件ANSI(GBK).txt中前n行内容并显示(该文件内容按GBK格式保存),n由键盘输入的一个整数。
运行后若输入:4
则结果输出:
(1)静夜思
李白
床前明月光,
疑是地上霜。
运行后若输入:6
则结果输出:
(1)静夜思
李白
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
filename = 'ANSI(GBK).txt'
n = int(input())
with open(filename, 'r', encoding='gbk') as file:
for i in range(n):
line = file.readline()
if line:
print(f"{line.strip()}")
else:
break
"""】"""
"""End"""
2)编程实现保存n行字符串内容到文本文件W_ANSI(GBK).txt中(该文件内容按GBK格式保存)。程序运行后由键盘输入一个整数n,然后输入n行字符串并保存到文件,最后程序调用ReadFile(FileName)函数输出保存内容。
运行后若输入:
2
汉字
ABC
则结果输出:
文件内容:[b'\xba\xba\xd7\xd6\r\n', b'ABC\r\n']
运行后若输入:
3
汉字
ABC
abc
则结果输出:
文件内容:[b'\xba\xba\xd7\xd6\r\n', b'ABC\r\n', b'abc\r\n']
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
#import readbin
from readbin import ReadFile
import os
FileName="W_ANSI(GBK).txt"
if os.path.exists(FileName):#如果文件存在
os.remove(FileName)#删除文件
"""【"""
n = int(input())
with open(FileName, 'w', encoding='gbk') as f:
for _ in range(n):
line = input()
f.write(line + '\n')
"""】"""
ReadFile(FileName)#输出保存内容
"""End"""
3)将键盘输入n个学生信息写入二进制文件stu.dat,其中学号11个字符长度、姓名10个字符长度的字符串,都以GBK格式保存,年龄以4字节有符号整型数保存,成绩以双精度浮点数保存,不要求字节对齐,数值数据字节顺序按本地机器,数据类型字节数按默认。运行后首先输入整数n,然后输入n个学生信息。要求:将输入的年龄加1以后保存、将输入的成绩加5以后保存。
运行后若输入:
2
20180861101 张亚佳 18 91.5
20180861102 韩云飞 19 89.5
则结果输出:
文件内容:[b'20180861101\xd5\xc5\xd1\xc7\xbc\xd1\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00 X@20180861102\xba\xab\xd4\xc6\xb7\xc9\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\xa0W@']
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import struct
from readbin import ReadFile
import os
FileName="stu.dat"
if os.path.exists(FileName):#如果文件存在
os.remove(FileName)#删除文件
"""【"""
n = int(input())
with open(FileName, "wb") as f:
for _ in range(n):
student_info = input().split()
student_id = student_info[0]
name = student_info[1]
age = int(student_info[2]) + 1
score = float(student_info[3]) + 5.0
f.write(struct.pack('<11s10si',student_id.encode('gbk'), name.encode('gbk'), age))
f.write(struct.pack('<d', score))
"""】"""
ReadFile(FileName)#输出保存内容
"""End"""
4)已知二进制文件stu3.dat有若干个学生信息,每个学生信息包含学号、姓名、年龄、成绩信息,其中学号11个字符长度、姓名最多10字符长度的字符串,都以GBK格式保存,年龄以4字节有符号整型数保存,成绩以双精度浮点数保存,无字节对齐,数值数据字节顺序按本地机器,数据类型字节数按默认。请编程读取前n个学生信息并显示,同时不显示空字符。
运行后若输入:
3
则结果输出:
20180861101,张亚佳,19,96.5
20180861102,韩云飞,20,94.5
20180861103,祖丞,21,92.5
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
import struct
def read_students(file_path, n):
with open(file_path, 'rb') as f:
for _ in range(n):
student_data = f.read(11 + 10 + 4 + 8)
if not student_data:
break
student_id = student_data[:11].decode('gbk').rstrip('\x00')
name = student_data[11:21].decode('gbk').rstrip('\x00')
age = struct.unpack('i', student_data[21:25])[0]
score = struct.unpack('d', student_data[25:33])[0]
print(f"{student_id},{name},{age},{score}")
n = int(input())
read_students('stu3.dat', n)
"""】"""
"""End"""
5)已知"price2016.csv"文件中,每行内容各数据项之间以逗号分隔表示,读这个文件前n行内容,然后将每行内容转换成列表并显示。
运行后若输入:
3
则结果输出:
['城市', '环比', '同比', '定基\n']
['北京', '101.5', '120.7', '121.4\n']
['上海', '101.2', '127.3', '127.8\n']
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
import csv
n = int(input())
with open('price2016.csv') as file:
reader = csv.reader(file)
rows = [row for row in reader]
for i in range(0,n):
for j in rows[i]:
if j==rows[i][-1]:
print(', \''+j+'\\n\']')
elif j==rows[i][0]:
print('[\''+j+'\'',end='')
else:
print(', \''+j+'\'',end='')
"""】"""
"""End"""
5)读入"price2016.json"文件中数据,然后将转换为二维数据在于data列表中,最后显示结果。
运行后输出:
[['同比', '城市', '定基', '环比'], ['120.7', '北京', '121.4', '101.5'], ['127.3', '上海', '127.8', '101.2'], ['119.4', '广州', '120', '101.3'], ['140.9', '深圳', '145.5', '102'], ['101.4', '沈阳', '101.6', '101.1']]
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
import json
fr=open('price2016.json','r')
ls=json.load(fr)
fr.close()
data=[list(ls[0].keys())]
for item in ls:
data.append(list(item.values()))
print(data)
"""】"""
"""End"""
-
8Tkinter
1)设计一个简单的计算器,如下图所示,定义tkinter串变量tkStrVar;添加文本框控件Exp,用于接收输入的数学表达式,并指定textvariable属性绑定tkinter串变量tkStrVar;添加标签控件Result,用于显示运算结果;添加按钮控件Btn,标题为“计算”,用于实现运算并将运算结果显示于标签控件Result。
运行后在文本框控件Exp中输入数学表达式:(5-1/5)*5,然后单击“计算”按钮Btn,将在标签控件Result中显示运算结果“=24.0”。
注意:不要设置窗体标题!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import tkinter as tk
"""【"""
root=tk.Tk()
tkStrVar=tk.StringVar()
Exp=tk.Entry(root,textvariable=tkStrVar)
Exp.pack()
Result=tk.Label(root)
Result.pack()
def cal():
Result.config(text='='+str(eval(tkStrVar.get())))
Btn=tk.Button(root,text='计算',command=cal)
Btn.pack()
"""】"""
root.mainloop()
"""End"""
2)设计一个登录界面,如下图所示。显示用户和密码文本框,单击“确定”按钮btn1后,若文本框e1输入用户名“张三”且文本框e2密码“123456”,则输出“口令正确”,否则输出“口令错误”若单击“退出”按钮btn2,则退出程序。
注意:不要设置窗体标题!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import tkinter as tk
"""【"""
root=tk.Tk()
v1=tk.StringVar()
v2=tk.StringVar()
e1=tk.Entry(root,textvariable=v1)
e2=tk.Entry(root,textvariable=v2)
e1.pack()
e2.pack()
def login():
if str(e1.get())=='张三' and str(e2.get())=='123456':
print('口令正确')
else:
print('口令错误')
btn1=tk.Button(root,text='确定',command=login)
btn1.pack()
def logout():
root.destroy()
btn2=tk.Button(root,text='退出',command=logout)
btn2.pack()
"""】"""
root.mainloop()
"""End"""
3)设计一个单选按钮的选择界面,如下图所示。添加三个单选按钮,绑定串变量(StringVar)var,默认为“红色”,且分别命名为r1、r2、r3,它们的文本(text)和值(value)分别为“红色”、“绿色”、“蓝色”;再添加一个标签,命名为lab,单击单选按钮后,在标签lab上显示相应按钮的值。
注意:不要设置窗体标题!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import tkinter as tk
"""【"""
root=tk.Tk()
var=tk.StringVar()
var.set("红色")
lab=tk.Label(root,bg='yellow',text='红色')
lab.pack()
def disp():
lab.config(text=var.get())
r1=tk.Radiobutton(root,text='红色',variable=var,value='红色',command=disp)
r1.pack()
r2=tk.Radiobutton(root,text='绿色',variable=var,value='绿色',command=disp)
r2.pack()
r3=tk.Radiobutton(root,text='蓝色',variable=var,value='蓝色',command=disp)
r3.pack()
"""】"""
root.mainloop()
"""End"""
4)设计一组复选按钮的200x170的兴趣选择界面,如下图所示。使用LIKE列表的文本添加五个复选按钮,绑定一组tk整型变量(IntVar)列表var对应元素,它们的文本(text)分别为“看书”、“电影”、“音乐”、“健身”、“游戏”;再添加一个标签,命名为lab,单击复选按钮后,调用选择事件方法Sel( ),实现在标签lab上显示所有选中按钮的文本。
注意:不要设置窗体标题!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import tkinter as tk
LIKE = ['看书', '电影', '音乐', '健身','游戏']
"""【"""
root=tk.Tk()
root.geometry('200x170')
lab=tk.Label(root,bg='yellow',width=20,text='select')
lab.pack()
var=[]
def Sel():
lab['text']=''
for i in range(5):
if var[i].get()==1:
lab['text']+=LIKE[i]
for i in LIKE:
var.append(tk.IntVar())
b=tk.Checkbutton(root,text=i,variable=var[-1],command=Sel)
b.pack(anchor='w')
"""】"""
root.mainloop()
"""End"""
5)设计一个列表框的200x155的课程选择界面,如下图所示。添加一个列表框及其5门课程,分别为“英语”、“语文”、“计算机基础”、“哲学”、“逻辑”;添加一个标签,命名为lab;再添加一个按钮,命名为btn,单击按钮后,实现在标签lab上显示所有选中课程名。
注意:不要设置窗体标题!
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import tkinter as tk
"""【"""
root=tk.Tk()
root.geometry('200x155')
listbox=tk.Listbox(root,selectmode='extended')
listbox.insert(0,'英语')
listbox.insert(1,'语文')
listbox.insert(2,'计算机基础')
listbox.insert(3,'哲学')
listbox.insert(4,'逻辑')
listbox.pack()
def Sel():
if len(listbox.curselection())>=1:
lab['text']=listbox.get(0,'end')[listbox.curselection()[0]]
btn=tk.Button(root,text='选中的课程',command=Sel)
btn.pack()
lab=tk.Label(root,bg='yellow')
lab.pack()
"""】"""
root.mainloop()
"""End"""
- 数据处理
1)编程:输入整数x、y、i,创建一个由x到y,以i为步长的数组并显示。
运行后若输入:1 10 2
则结果输出:[1 3 5 7 9]
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
"""【"""
import numpy as np
x,y,i=map(int,input().split())
z=np.arange(x,y,i)
print(z)
"""】"""
"""End"""
2)编程输入整数m、n,用np.random.rand( )方法创建一个m行n列的随机数组并显示。
运行后若输入:2 3
则结果输出:
[[0.54340494 0.27836939 0.42451759]
[0.84477613 0.00471886 0.12156912]]
说明:
运行结果中随机数数值不考虑,只需保证生成随机数的个数m行n列。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import numpy as np
"""【"""
x,y=map(int,input().split())
r=np.random.random(size=(x,y))
print(r)
"""】"""
"""End"""
3)编程输入整数n,创建一个长度为n的一维数组,元素为[0,10)的Python随机整数(用random.randint( )方法,不是np.random.randint( )方法),显示所有大于5的元素。
运行后若输入:8
则结果输出:[7 7 6 6 8]
说明:
运行结果中随机数数值不考虑,只需保证生成随机数的个数。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import numpy as np
import random
"""【"""
#import numpy as np
x=int(input())
o=[random.randint(0,10)for i in range(x)]
o=np.array(o)
print(o[o>5])
"""】"""
"""End"""
4)编程创建一个长度为5,元素为[0,10)的Python随机整数(用random.randint( )方法,不是np.random.randint( )方法)的一维数组,输入整数n,显示该数组除以n取整及其余数。
运行后若输入:2
则结果输出:[1 3 3 1 3] [0 1 1 0 0]
说明:
运行结果中随机数数值不考虑,只需保证生成随机数的5个数。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import numpy as np
import random
"""【"""
x=int(input())
o=[random.randint(0,10)for i in range(5)]
o=np.array(o)
print(np.floor_divide(o,x),np.remainder(o,x))
"""】"""
"""End"""
5)编程创建一个m行n列的数组,其元素值介于a和b之间的随机数(用np.random.uniform( )方法),然后按就近舍入原则保留一位小数,之后将保留一位小数的结果按同样原则保留零位小数。运行后输入整数a、b、m、n,然后显示舍入前后的值。
运行后若输入:2 5 3 4
则结果输出:
[[3.63021483 2.83510816 3.27355277 4.5343284 ]
[2.01415657 2.36470736 4.01224725 4.47755827]
[2.41011977 3.47527999 4.67396586 2.62760637]]
[[3.6 2.8 3.3 4.5]
[2. 2.4 4. 4.5]
[2.4 3.5 4.7 2.6]]
[[4. 3. 3. 4.]
[2. 2. 4. 4.]
[2. 4. 5. 3.]]
说明:
运行结果中随机数数值不考虑,只需保证生成随机数的个数。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import numpy as np
"""【"""
a, b, m, n = map(int, input().split())
random_array = np.random.uniform(a, b, (m, n))
rounded_one_decimal = np.round(random_array, 1)
rounded_zero_decimal = np.round(rounded_one_decimal, 0)
print(random_array)
print(rounded_one_decimal)
print(rounded_zero_decimal)
"""】"""
"""End"""
6)编程创建n个成绩的数组,其成绩值介于0和100之间的随机整数(用np.random.randint( )方法),然后将成绩不及格的加10分、将成绩及格的减1分。运行后输入整数n,然后显示加成绩前后的值。
运行后若输入:10
则结果输出:
[ 8 24 67 87 79 48 10 94 52 98]
[18 34 66 86 78 58 20 93 62 97]
说明:
运行结果中随机数数值不考虑,只需保证生成随机数的个数。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import numpy as np
"""【"""
n = int(input())
scores = np.random.randint(0, 100, n)
print(scores)
adjusted_scores = np.where(scores < 60, scores + 10, scores - 1)
print(adjusted_scores)
"""】"""
"""End"""
A数据可视化
参考学长的博客吧我没试出来,结果正确但不给分。博客网址:ksxt python课外练习 - 随笔分类 - 淡淡的晓山横雾 - 博客园 (cnblogs.com)
1)用折线图显示显示一个完整的正弦曲线,如下图所示,其中:标题为"正弦曲线",x轴为[0,2]之间步长0.1的所有点,y轴为sin(np.pi*x),按曲线格式字符串依次设置为红色、圆点、实线;线宽为3,标记大小为10;显示网格线;汉字字体为“仿宋”('FangSong'),坐标轴正常显示负号;依次设置x轴名称为“x轴”,y轴名称为“y=sinx”。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import matplotlib.pyplot as plt
import numpy as np
if __name__=='__main__':
"""【"""
x=np.arange(0,2.1,0.1)
y=np.sin(np.pi*x)
plt.plot(x,y,'ro-',linewidth=3,markersize=10)
plt.rcParams['font.sans-serif']=['FangSong']
plt.rcParams['axes.unicode_minus']=False
plt.xlabel("x轴")
plt.ylabel("y=sinx")
plt.title("正弦曲线")
plt.grid(True)
"""】"""
plt.show()
"""End"""
2)用散点图显示10个随机点分布,如下图所示,其中:标题为"随机点",x轴和y轴用numpy随机数的rand()方法生成0~1的随机数,随机点标记为五角形
,随机点大小s为200,颜色为红色"r",标记边框色(edgecolor)为黄色"y",透明度为0.8;汉字字体为“黑体”('SimHei'),坐标轴正常显示负号;依次设置x轴名称为“x轴”,y轴名称为“y轴”。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import matplotlib.pyplot as plt
import numpy as np
if __name__=='__main__':
"""【"""
x = np.random.rand(10)
y = np.random.rand(10)
plt.scatter(x, y, marker='*', s=200, edgecolor="y", color='r', alpha=0.8)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('随机点')
"""】"""
plt.show()
"""End"""
3)用条形图显示某门课各分数段人数,如下图所示,其中:标题为"成绩分布",x轴为各分数段,依次为[20,40,60,80,100],y轴为人数,依次为[1.0,2.0,3.0,5.0,4.0],柱宽为10,Y轴标尺起始值为0,柱在x轴坐标点居中位置,柱不透明,各柱颜色依次为['r','g','b','y','c'],各柱边框颜色依次为定义['g','b','y','c','r'],柱边框线宽默认,图例为x轴的各分数段,汉字字体为“黑体”('SimHei'),坐标轴正常显示负号;显示图例;依次设置x轴名称为“成绩”,y轴名称为“人数”。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import matplotlib.pyplot as plt
if __name__=='__main__':
"""【"""
list01=[20,40,60,80,100]
list02=[1.0,2.0,3.0,5.0,4.0]
list03=['r','g','b','y','c']
list04=['g','b','y','c','r']
plt.bar(list01,list02,width=10,align='center',alpha=1,color=list03,edgecolor=list04,label=list01,bottom=0)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.ylim(0)
plt.xlabel('成绩')
plt.ylabel('人数')
plt.title('成绩分布')
plt.legend()
"""】"""
plt.show()
"""End"""
4)用直方图显示某班级年龄分布,如下图所示,其中:标题为"年龄分布",x轴为所有学生的年龄,具体为[18,19,16,18,20,23,20,18,21,20,19,20,21,17,17,19,16,18,22,23,20,18,22,20,19,22,21,17],指定直方图条形的个数bins为8个,直方图颜色为"steelblue",直方图边框色为绿色"g",透明度为0.3;汉字字体为“黑体”('SimHei'),坐标轴正常显示负号;依次设置x轴名称为“年龄”,y轴名称为“频数”。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import matplotlib.pyplot as plt
if __name__=='__main__':
"""【"""
list01 = [18, 19, 16, 18, 20, 23, 20, 18, 21, 20, 19, 20, 21, 17, 17, 19, 16, 18, 22, 23, 20, 18, 22, 20, 19, 22, 21, 17]
plt.hist(x=list01,bins=8,color="steelblue",edgecolor="g",alpha=0.3)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('年龄')
plt.ylabel('频数')
plt.title('年龄分布')
"""】"""
plt.show()
"""End"""
5)用饼图显示各国GDP,如下图所示,其中:标题为"各国GDP",x轴即各扇区为GDP值,依次为[15,11,11,4,3],各扇区偏移圆心比例,依次为[0,0.1,0,0,0],各扇区标签为国家,依次为["美国","中国","印度","日本","德国"],各扇区颜色依次为['c','y','g','r','m'],所有扇区显示百分比的格式化为"%0.2f%%",扇区边缘显示阴影,各扇区说明文字跟随扇区旋转;图例默认为各扇区标签即各国家;汉字字体为“黑体”('SimHei'),坐标轴正常显示负号;显示图例。
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import matplotlib.pyplot as plt
if __name__=='__main__':
"""【"""
list01=[15,11,11,4,3]
list02=[0,0.1,0,0,0]
list03=["美国","中国","印度","日本","德国"]
list04=['c','y','g','r','m']
plt.pie(x=list01,labels=list03,explode=list02,shadow=True,colors=list04,autopct="%0.2f%%",rotatelabels=True)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.legend()
plt.title("各国GDP")
"""】"""
plt.show()
"""End"""
B爬虫与分析网页数据
1)根据url变量提供的网址,爬取网页中2021年中国大学排名信息,然后加工并显示前N名大学的排名、学校名称、省市、类型、总分、办学层次等五列信息。其中N由键盘输入。
其中北京大学显示如下图:
北京大学对应脚本如下:
<tr data-v-3fe7d390><td data-v-3fe7d390><div class="ranking top2" data-v-3fe7d390>
2
</div></td><td class="align-left" data-v-3fe7d390><div class="univname-container" data-v-3fe7d390><div class="logo" data-v-3fe7d390><img alt="北京大学" οnerrοr='this.src="/images/blank.svg"' src="https://www.shanghairanking.cn/_uni/logo/86350223.png" class="univ-logo" data-v-3fe7d390></div> <div class="univname" data-v-3fe7d390><div data-v-b80b4d60 data-v-3fe7d390><div class="tooltip" data-v-b80b4d60><div class="link-container" data-v-b80b4d60><a href="/institution/peking-university" class="name-cn" data-v-b80b4d60>北京大学 </a> <div class="collection" style="display:none" data-v-b80b4d60><img src="/_nuxt/img/uncollection.5e124aa.svg" alt data-v-b80b4d60></div></div> <!----></div></div> <div data-v-f9104fdc data-v-3fe7d390><div class="tooltip" data-v-f9104fdc><div class="link-container" data-v-f9104fdc><a href="/institution/peking-university" class="name-en" data-v-f9104fdc>Peking University </a></div> <!----></div></div> <p class="tags" data-v-3fe7d390>双一流/985/211</p> <!----> <!----> <!----></div></div></td><td data-v-3fe7d390>
北京
<!----></td><td data-v-3fe7d390>
综合
<!----></td><td data-v-3fe7d390>
855.3
</td><td data-v-3fe7d390>
36.1
</td></tr>
说明:可以不安装第三方库requests和BeautifulSoup。
运行后若输入:3
则结果输出:
1,清华大学TsinghuaUniversity一流大学A类/985/211,北京,综合,969.2,37.9
2,北京大学PekingUniversity一流大学A类/985/211,北京,综合,855.3,36.1
3,浙江大学ZhejiangUniversity一流大学A类/985/211,浙江,综合,768.7,34.3
运行后若输入:5
则结果输出:
1,清华大学TsinghuaUniversity一流大学A类/985/211,北京,综合,969.2,37.9
2,北京大学PekingUniversity一流大学A类/985/211,北京,综合,855.3,36.1
3,浙江大学ZhejiangUniversity一流大学A类/985/211,浙江,综合,768.7,34.3
4,上海交通大学ShanghaiJiaoTongUniversity一流大学A类/985/211,上海,综合,723.4,35.5
5,南京大学NanjingUniversity一流大学A类/985/211,江苏,654.8,35.1
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
import requests
from bs4 import BeautifulSoup
url = 'https://www.shanghairanking.cn/rankings/bcur/2021'
"""【"""
page=requests.get(url)
page.encoding='utf-8'
html=page.text
soup=BeautifulSoup(html,"html.parser")
data=soup.find_all('td')
n=int(input())
for i in range(n):
str=''
str+=data[i*6+0].text.replace(' ','').replace('\n','')+','
str+=data[i*6+1].text.replace(' ','').replace('\n','')+','
str+=data[i*6+2].text.replace(' ','').replace('\n','')+','
str+=data[i*6+3].text.replace(' ','').replace('\n','')+','
str+=data[i*6+4].text.replace(' ','').replace('\n','')+','
str+=data[i*6+5].text.replace(' ','').replace('\n','')+'\n'
print(str,end='')
"""】"""
"""End"""
2)matplotlib库的网页已下载并保存于“matplotlib · PyPI.html”文件(utf-8格式)中,请爬取并显示第i个版本的信息,并显示文件名(*.whl)、文件大小、更新时间、适用版本。i由键盘输入。其中第1版本显示如包过下图:
对应脚本如下:
<div class="card file__card">
<a href="https://files.pythonhosted.org/packages/80/24/97c9bb03263d0812ebc17ad0608a4b9f2dda4d53ec21bd7534a932809f30/matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl">
matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl
</a>
(7.2 MB
<a href="#copy-hash-modal-f0c610ff-69c1-4f6d-85ae-806e07cfe734">view hashes</a>)
<p class="file__meta">
Uploaded <time data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false" datetime="2022-11-03T01:52:11+0000">
Nov 3, 2022
</time>
<code>pp39</code>
</p>
</div>
说明:第三方库BeautifulSoup已自动下载考试系统文件夹,不用安装。
运行后若输入:1
则结果输出:
matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl;7.2MB;UploadedNov3,2022 pp39;
运行后若输入:2
则结果输出:
matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl;7.4MB;UploadedNov3,2022 pp39;
请在"""【"""和"""】"""之间的空白处填入适当语句或式子。
"""源程序"""
#coding=gbk
from bs4 import BeautifulSoup
url = 'matplotlib · PyPI.html'
"""【"""
import re
from datetime import datetime
with open(url, 'r', encoding='utf-8') as file:
soup = BeautifulSoup(file, 'html.parser')
i = int(input())
cards = soup.find_all('div', class_='card file__card')
if i > len(cards) or i < 1:
print("输入的索引超出范围")
else:
card = cards[i]
a_tag = card.find('a')
file_name = a_tag.text.strip()
file_size = a_tag.next_sibling.strip()
file_size = file_size[1:].strip().replace(" ", "")
file_meta = card.find('p', class_='file__meta')
uploaded_time = file_meta.find('time')['datetime']
version = file_meta.find('code').text.strip()
try:
dt = datetime.strptime(uploaded_time, "%Y-%m-%dT%H:%M:%S%z")
uploaded_time = f"{dt:%b}{dt.day},{dt.year}"
except ValueError as e:
print(f"时间格式错误: {e}")
uploaded_time = "未知时间"
print(f"{file_name};{file_size};Uploaded{uploaded_time} {version};")
"""】"""
"""End"""