python-ksxt练习

目录

3.程序基本结构

4.组合数据类型

5.函数

6面向对象

7.文件操作

8Tkinter

A数据可视化

B爬虫与分析网页数据


  1. 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"""

  1. 4.组合数据类型

1)编程输入整数1~7,对应显示星期一~星期日。

运行后若输入:2

则结果输出:星期二

运行后若输入:4

则结果输出:星期四

运行后若输入:7

则结果输出:星期日

请在""""""""""""之间的空白处填入适当语句或式子。

"""源程序"""

#coding=gbk

""""""

dic={'1':'星期一',\

     '2':'星期二',\

     '3':'星期三',\

     '4':'星期四',\

     '5':'星期五',\

     '6':'星期六',\

     '7':'星期天'}

print(dic[input()])

""""""

"""End"""

2)编程输入两个字符串,转换成对应的集合存于集合变量ab中(不能存其它变量),然后求这两集合的交集并显示结果。

运行后若输入: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]))

  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"""

  1. 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"""

  1. 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"""

  1. 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,默认为红色,且分别命名为r1r2r3,它们的文本(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. 数据处理

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>

说明:可以不安装第三方库requestsBeautifulSoup

运行后若输入: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"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值