4.2 数值计算 知识点题库

以下关于模块说法错误的是(    )
A . 一个xx.py就是一个模块 B . 任何一个普通的xx.py文件可以作为模块导入 C . 模块文件的扩展名不一定是 .py D . 运行时会从制定的目录搜索导入的模块,如果没有,会报错异常
   matplotlib模块是一个。matplotlib的绘图原理很简单,利用画线函数就可以在直角平面内轻松地将(x,y)坐标点对连接成平滑曲线。
  要达到在窗口显示不同位置的福字,需要完成两个步骤: ⑴在新的位置上;⑵把原来的图像。要“擦掉”某个图像,可以选择它,通常采用或者用来覆盖的方式。
Pygame自带了一个监听类循环,不断检查用户的操作,这个循环在程序运行过程期间持续工作。仔细阅读理解如下代码填写括号内容。

while True:

  for event in pygame.event.get():     #  

    if event.type==pygame.QUIT:          # 

      sys.exit()                  #退出程序

    if event.type==pygame.MOUSEBUTTONDOWN: #

下面是随机点名器的代码设计,大致可分为四个模块。一是导入相应模块,二是窗体界面元素的产生及布局和有关属性设置,三是打开“点名册.txt”,读取并保存姓名数据,四是设计两个按钮的单击事件代码。以下是部分代码,认真阅读,补充完成下列程序。

from ①         #导入tkinter模块

import tkinter.messagebox           #导入弹窗库模块

import random                       #导入随机数模块

import datetime                     #导入日期时间模块

root = Tk()                         #创建主窗口

root.title("随机点名器")            #设置窗口标题

root.geometry('808x280+300+200')    #设置窗口大小及位置

root.resizable(0,0)                 #禁止调整窗口大小

var=StringVar()                     #定义StringVar()类型

var1=StringVar()

c=②("点名册.txt",'r')          #以只读模式打开文件

a=c.readlines()                     #读取文件全部内容

c. ③                     #关闭文件

b=[]                                #b作为列表a的备份

下列可以导入Python模块的语句是(    )
A . import module B . input module C . print module D . def module
某餐厅推出优惠活动,凡到店消费的顾客均可随机抽取三份小菜中的一份 ,20元以上再赠送一个“荷包蛋”。请用Python程序解决问题。

import random

def coupon(money):

        ①       

    if 0< money <= 20:

        return food

    elif money > 20:

        

appetizer = ["话梅花生","拍黄瓜","凉拌三丝"]

payment = float(input("输入您的消费金额:"))

      ②      

print("赠送的小菜为:"+result)

  1. (1) 若输入的消费金额是30元,程序输出的可能结果有 种,写出程序的运行结果:
  2. (2) 在程序划线处应填写的代码是什么?
       ②
  3. (3) 将程序代码中加框处的语句改为: 是否可行 (选填:“是”或“否");请说明原因:
用Python程序实现统计随机数出现的次数。若随机产生30个[0,9]的整数,统计数字0~9出现的次数。以下是部分Python程序段,请回答下列问题: .

import random

def check(a):

b=[0]*10     #初始化列表b,列表元素为10个0

for i in range(0,len(a)):

            ①        

return b

list=[0]*30

for i in range(0,30):

    num = random.randint(0,9)

           ②         

print(list)

print("0~9数字依次出现次数.:"       ③        )

  1. (1) check函数的功能是
  2. (2) 程序中划线处应填入的代码是什么?

     ② ③ 

调用模块不正确的(   )
A . os.system( ) B . random.sample( ) C . mymodule.match_num( ) D . sys.sleep( )
N维数组对象ndarray是(    )的基本数据结构。
A . NumPy B . SciPy C . Pandas D . Matplotlib
若两个素数之差为 2,则该对素数称为双胞胎数,如 3,5 就是一对双胞胎数。编写 python 程序,实现如下功能:输入 n 的值,统计显示 n 以内的所有双胞胎数。程序运行界面如图所示:

实现上述功能的程序如下,请在划线处填入合适的代码。

import math

def isprime(x):

   

    for i in range(2,int(math.sqrt(x))+1):

        if x % i = = 0 :

             f=False

     return f

n=int(input("请输入一个正整数n:"))

c=0

k=3

while k < = n-2:

    if isprime( k ) and :

        c + = 1

        print("第"+ str( c ) +"对双胞胎数:", k ,'和',k+2)

    

print("共有"+str(c)+"对双胞胎数")

要利用Python通过数组绘制拟合曲线图,必须要用到的外部库是(    )
A . time库 B . random库 C . turtle库 D . matplotlib 库
某市普通高中选课数据如图1所示,学生从地理、化学、生物等科目中选择三门作为高考选考科目,“1”表示已选择的选考科目。使用Python编程分析每所学校各科目选考的总人数、全市各科选考总人数及其占比,经过程序处理后,保存结果如图2

图1

图2

实现上述功能的Python程序如下:

import pandas as pd

import itertools

#读数据到pandas的 DataFrame结构中

df=   ①     (”xk73.csv”,sep=‘.’,header=‘infer’,encoding=‘utf-8’)

km=[‘物理’ ,‘化学’ ,‘生物’ ,‘政治’ ,‘历史’ ,‘地理’ ,‘技术’ ]

#按学校分组计数

sc=df.groupby(‘    ②     ’,as_index=False).count( )

#对分组计数结果进行合计,合计结果转换为 DF结构并转置为行

df_sum=pd.DataFrame(data=sc.sum()).T

df_sum[‘学校代码’]=‘合计’

#增加"合计"行

result=sc.append(df_sum)

#百分比计算

df_percent=df_sum

df_percent[‘学校代码’]=‘比例’

for k in km:

per=df_percent.at[0,k]/zrs

  df_percent[k]=per

  #增加"百分比"行

result=result.append(df_percent)

#删除"姓名"列

result=   ③   

#修改"学生编号"为"总人数"

result=result.rename(columns={‘学生编号’:‘总人数’})
#保存结果,创建 Excel文件.生成的 Excel文件

result.to_excel("学校人数统计.xlsx")

  1. (1) 请在划线处填入合适的代码

     ② ③ 

  2. (2) 加框处语句的作用是
以下程序引入Python的math模块,使用math模块下的floor函数对命令行输入的实数进行取整。请将程序补充完整。

n=input(“请输入一个实数:”)

n2= math. floor(float(n))

print(n2)

time模块是一个。time.sleep(10)是10秒。
Pygame自带了一个监听类循环,不断检查用户的操作,这个循环在程序运行过程期间持续工作。仔细阅读理解如下代码在横线处填写内容

while True:

    for event in pygame.event.get():  #

        if event.type==pygame.QUIT:          #     

            sys.exit()                  #退出程序

        if event.type==pygame.MOUSEBUTTONDOWN: #

numpy是一个科学计算包,其中包含很多数学函数,如三角函数、矩阵计算方法等。arange函数是该模块中的函数,下列说法错误的是(     )
A . 可以用arange函数创建一个等差数列。 B . arange函数如在0~2π之间每隔0.01取个值,则可以用arange(0,2* numpy.pi,0.01)来表示,其中numpy.pi表示π。 C . Import numpy as np后,x=np,arange(0,2* numpy.pi,0.01),可以将x应用到y=np.sin(x)图像绘制 D . 可以用arange函数创建一个等比数列
图像的存储和处理在计算机内部的是采用二进制的形式,一幅图像常常由分辨率、颜色深度的方式来存储,Python的PIL模块能够直接读取图像中每个像素点的颜色信息,一般采用 RGB(红:0~255,绿:0~255,蓝:0~255)的方式表示颜色。现有一幅红字白底图像1.bmp,基本信息如下:

1 bmp

1 bmp属性截图

#程序段 1:

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

img=np.array(Image.open('1.bmp').convert("L"))

rows,cols=img.shape#获取图像的行数和列数

for i in range(rows):

for j in range(cols):

if img[i,j]>128:

img[i,j]=0 #设置为黑色

else:

img[i,j]=1 #设置为白色

plt.figure("1.bmp")

plt.imshow(img,cmap="gray") #以灰度模式显示

plt.axis("off")

plt.show()

说明:以上程序段1实现将1.bmp 以黑底白字显示

请根据以上信息回答下列问题:

  1. (1) 程序段1运行过程中,变量j的值范围是
  2. (2) 程序段2调试时出现“IndexError: index 128 is out of bounds for axis 1 with size 128”的提示,则上述程序出现这个错误的语句是

    A. rows,cols=img.shape                        B. for i in range(rows)

    C. img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]       D. plt.imshow(img,cmap="gray")

    应该修改为:

  3. (3) 将第(2)题表述的错误修改正确后,程序段2运行后图片呈现的内容:

    #程序段 2:

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt img=np.array(Image.open('1.bmp').convert("L"))

    rows,cols=img.shape

    for i in range(rows):

    for j in range(cols//2):

    img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]

    plt.figure("hh")

    plt.imshow(img,cmap="gray")

    plt.axis("off")

    plt.show()

某程序功能如下输入n,生成n*n的方阵,存于列表a,内容为1至9的随机整数。再对以(x0,y0)和(x1, y1)为对角顶点的矩形区域中的数据进行水平翻转,并将变换后的二维数组以矩阵形式输出。再输入小于n的四个数字(如a,b,c,d,四者关系必须满足a<c,b<d),用逗号间隔: 2,1,6,5 则左上角为a[1][2] ,右下角为a[5][6],则运行程序后,运行界面如图所示。

  1. (1) 以上图为例,如果输入左上角+右下角的坐标为:2,3,7,5。水平翻转后,则元素a[3][4]的值在新数组保存在元素a[][](填写下标)中。
  2. (2) 代码如下并完成填空。

    #生成n*n的矩阵

    import random

    n=int(input(‘输入n,产生n*n的方阵:’ ))

    a=[[random.randint(1,9) for i in range(n)] for j in range(n)]

    for i in a:

      print(i)

    print( )

    x,y=[],[]

    xy=input("请输入左上角+右下角坐标:") #输入左上角坐标+右下角坐标,用逗号分隔数字。如:"2,1,14,13"

    xy=xy+","

    c,j=0,0

    for i in range(len(xy)):

      if xy[i]==",":

        if :

          x.append(int(xy[j:i]))

        else:

          y.append(int(xy[j:i]))

       

        c=c+1

    for i in range(y[0],y[1]+1,1):

      for j in range(x[0],(x[0]+x[1])//2+1,1):

        a[i][j],a[i][]=a[i][],a[i][j]

    for i in range(len(a)):

      print(a[i])

小明对入栈、出栈规则研究发现,若有n个数字1,2,3,……,n按由小到大的顺序入栈,则出栈序列必须遵循下述原则:当数字x出栈后,则在x后出栈的小于x的所有数字必定以降序排列,比x大的数字可以夹杂在该降序序列中。现编写Python程序,按上述原则验证一个随机产生的出栈序列是否可能,程序运行界面如图所示。

  1. (1) 根据题意,若有7个数字入栈,则出栈序列“3→2→5→4→7→1→6”是 (单选,填字母:A .可能 / B .不可能)
  2. (2) 实现上述功能的Python程序代码如下,程序中加框处代码有错,请改正。

    import random

    n=int(input('请输入入栈元素的个数:'))

    data=[i+1 for i in range(n)]

    random.shuffle(data)     #将序列的所有元素随机排序

    s=''

    for i in range(n):

      s+=str(data[i])+'→'

      print('随机产生的出栈序列为:'+ )      #去除最后多余的'→'

      flag=True; i=0

    while i<n-1 and flag:

         ①   

      for j in range(i+1,n):

        if data[j]<data[i]:

          if data[j]<x:

            x=data[j]

          else:

               ②   

        break

        i+=1

    if flag:

      print('该出栈序列是可能的!')

    else:

      print('该出栈序列是不可能的!')

  3. (3) 请在划线处填入合适代码。

最近更新