4.1.4 Python的函数 知识点题库

下列VB表达式中,值最小的是(    )。
A . Abs(-3) + Len("NBXIAOSHI") B . Val(Mid("Ningbo2222", 8, 1)) C . Int(Sqr(36) + 5) \ 2 D . 10^2 Mod 100 \ 3 ^ 2
下列表达式的值最大的是(   )
A . Val (Str(10) + Str(0)) B . Val (Str(10)) + Val(Str(1)) C . Int(Rnd * 100) D . Sqr (Len("10000"))
(程序设计题)加密解密问题。小明设计了将明文字符(大、小写字母)转为密文字符的加密算法,加密过程如下:

步骤一:输入明文字符,将该字符转换成ASCII;

步骤二:将ASCII码转换成十六进制字符串;

步骤三:将产生的十六进制字符串进行头尾互换并输出。

若用Python程序实现上述加密过程,请回答下列问题:

  1. (1) 明文字符“A”经加密后得到的十六进制字符串为
  2. (2) hex(x)函数实现将十进制数转换成十六进制字符串,如hex(65)="0×41",为实现步骤一和步骤二,请利用函数完善下列代码。

    s=input("请输,入明文字符(大写字母或小写字母):")

    a=     #将字符转换为ASCII

    b=     #将ASCII码转换成十六进制字符串

  3. (3) (多选题)为实现步骤三,下列选项中不正确的是(    )
    A . B . C . D .
  4. (4) 上机调试实现上述加密过程,思考并完成解密过程。

    提示:int(x,16)函数实现将十六进制字符串x转换成十进制整数ASCII值。

有如下 VB 程序段:

s = "582319476"

i = 1: max = 0: res = ""

Randomize

Do While i <= Len(s) \ 3

    tmp = Int(Rnd * 9 + 1)

    If tmp >= max Then

        res = res + Mid(s, tmp, 1)

        max = tmp

        i = i + 1

    End If

Loop

执行该程序段后,变量res的值不可能是(    )

A . "446" B . "249" C . "346" D . "897"
已知字符“A”的内码为65,“a”的内码为97,则下列程序执行后变量t的值为(    )

s= “AaBb”:t=””

For i=1 To Len(s)

      ch= Mid(s,1,1)

      If ch>= “a”And ch<= “z”Then ch=Chr(Asc(ch)-32)

      t=ch+t

Next i

A . “AaBb" B . “AABB” C . “BbAa” D . “BBAA”
模拟剪刀石头布的游戏,骰子是一个正六面体,用1~3这3个数分别代表剪刀、石头、布这三种情况,使用RND随机函数可以表示为(   )
A . INT(RND(3)+1) B . INT(RND*2+1) C . INT(RND(2)+1) D . INT(RND*3+1)
在VB中,表达式Mid("里约奥运", 2, 2)的结果是(   )
A . 里约 B . 奥运 C . 约奥 D .
编写一个读数小程序。在文本框1中输入一个10000以内的正整数,点击“读数”按钮,在文本框2中输出该数字的中文阅读,程序运行界面如图所示。实现该功能的VB程序段如下:

Const SN = "〇一二三四五六七八九十百千"

Dim s1 As String, s2 As String, i As Integer

s1 = Text1.Text: s2 = "": i = 1

Do While i < Len(s1)

    n1 = Val(Mid(s1, i, 1))

    n2 = Val(Mid(s1, i + 1, 1))

    If n1 <> 0 Then         

    If n1 = 0 And n2 <> 0 Then          

    i = i + 1

Loop

n1 = Val(Mid(s1, i, 1))

If n1 <> 0 Then          

Text2.Text = s2

上述程序方框处可选语句为:

①s2 = s2 & Mid(SN, n1 + 1, 1) & Mid(SN, Len(s1) - i + 10, 1)

②s2 = s2 & Mid(SN, 1, 1)

③s2 = s2 & Mid(SN, n1 + 1, 1)

则(1)、(2)、(3)处语句依次是(   )

A . ①②③ B . ②①③ C . ②③① D . ③②①
以下选项中,不是Python中文件操作的相关函数是(   )。
A . open () B . load () C . read () D . write ()
有如下VB 程序段:

s1 = "PROGRAM": s2 = ""

For i = 1 To 4

    t = Int(Rnd * 4) * 2 + 1

    Do While f(t)

        t = Int(Rnd * 4) * 2 + 1

    Loop

    f(t) = True

    s2 = s2 + Mid(s1, t, 1)

Next i

Label1.Caption = s2

数组f 各元素的初值为False,执行该程序段后,标签Label1上显示的内容可能是(    )

A . PPOM B . MROR C . PROM D . RPAM
灰度图像像素的灰度值为0~255的整数,为区分图像的前景与背景,寻找一个最佳灰度值T,使得前景、背景这两类像素之间的差异最大。

求T值的方法如下:取某个灰度值k,将图像所有N个像素分成两类,灰度值小于k的作为背景像素,灰度值大于等于k 的作为前景像素,统计两类像素的个数分别为N1、N2,计算灰度值的均值分别为μ1、μ2,利用公式 计算出两类像素的差异值。当该值最大时,k即为要找的最佳灰度值T。若某区间段内有连续多个T满足要求,则T取中间值。

例如:图a所示图像像素的灰度值仅为0~5,统计0~5灰度值像素的个数依次为8、7、2、6、9、4,如图b所示。当k=2时,N1=15,N2=21,μ1=(0*8+1*7)/(8+7),μ2=(2*2+3*6+4*9+5*4)/(2+6+9+4),计算出差异值为2.5635。依此类推,计算差异值如图c所示。可知,当k=3时差异值最大,3是最佳灰度值T。

编写VB程序,实现如上功能。读取图像所有像素的灰度值后,单击按钮Command1,在标签Label1上显示T值。

  1. (1) 在上例中,取k=3,则背景像素的个数N1为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const N = 32 * 24

    Dim a(1 To N) As Integer     'a 数组存储图像所有像素的灰度值

    Private Sub Form_Load()

        '读取图像中的所有像素的灰度值存入a数组,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, k As Integer

        Dim sum As Long, sum1 As Long, N1 As Long, N2 As Long

        Dim μ1 As Double, μ2 As Double, diff As Double, max_var As Double

        Dim t1 As Integer, t2 As Integer, T As Integer

        Dim h(255) As Long

        Dim c(255) As Long

        max_var = 0: t1 = 0: t2 = 0: N1 = 0: N2 = 0: sum = 0: sum1 = 0

        For i = 0 To 255

            h(i) = 0: c(i) = 0

        Next i

        For i = 1 To N

            h(a(i)) = h(a(i)) + 1

        Next i

        c(0) = h(0)

        For i = 1 To 255

                 '统计灰度值小于等于i 的像素个数

            sum = sum + i * h(i)

        Next i

        For k = 1 To 255

            N1 = c(k - 1)

            N2 = N - N1

            If N1 <> 0 And N2 <> 0 Then

               

                μ1 = sum1 / N1

                μ2 = (sum - sum1) / N2

                diff = N1 / N * N2 / N * (μ1 - μ2) ^ 2

                diff = Round(diff, 4)      'Round 函数的作用是对diff 保留四位小数

                If diff >= max_var Then

                    t1 = k

                If diff > max_var Then

                    max_var = diff

                End If

            End If

        Next k

        T = (t1 + t2) \ 2

        Label1.Caption = "将该图像分割为前景与背景两部分的最佳灰度值为:" & T

    End Sub

在Python中,round(1.3952,2)的值是(   )
A . 1.4 B . 1.40 C . 1.395 D . 1.3952
欲删除列表框中指定的列表项,应使用的方法是(    )
A . Remove B . Del C . CIs D . Removeltem
有如下VB程序段:

s1 = "2019GaoKao"

For i = 1 To Len(s1)

    ch = Mid(s1, i, 1)

    If ch >= "0" And ch <= "9" Then

        ch = Str((Val(ch)+1) Mod 10)

        s2 = ch + s2

    ElseIf ch >= "a" And ch <= "z" Then

        ch = Chr(Asc(ch) - 32) s2 = s2 + ch

    End If

Next i

该程序运行后,s2的值是(     )

A . "A0A00213" B . "0213A0A0" C . "02130A0A" D . "0A0A0213"
下列属于非法调用的函数是(  )。
A . sqr(-5) B . Sgn(-5) C . Exp(-5) D . Int(-5)
下列程序的功能是(     )

PRIVATE SUB FORM_CLICK( )

    A=VAL(INPUTBOX(“请输入第一个数”))

    B=VAL(INPUTBOX(“请输入第二个数”))

    C=VAL(INPUTBOX(“请输入第三个数”))

    M=A

    IF M>B THEN M=B

    IF M>C THEN M=C

    PRINT M

END SUB

A . 给出三个数中的大数 B . 给出三个数中的小数 C . 给出三个数中的某个数
某字符(限ASCII字符)加密算法,对明文中的每个字符进行下列加密处理:

1)将该字符的ASCII码转换成对应的2位十六进制数;

2)将产生的十六进制数互换位置;

3)步骤(2)产生的二位十六进制数即为该明文字符加密后的密文字符。

小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示

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

Private Sub Command1_ Click()

    Dim s As String, a As String, ans As String

    Dim c As Integer, i As Integer

Dim c1 As Integer, c2 As Integer

    Dim d1 As String, d2 As String

    s= Text1. Text

    ans =“”

    For i=1 To Len(s)

        a=Mid(s, i, 1)

        c= Asc(a)

c1=c \16

        c2=   ①   

d1= Mid(Str(c1), 2, 1)       '使用Str(c1)将在字符c1前增加一个空字符

        If c2>>=10 Then    ②   Else d2 = Mid(Str(c2), 2, 1)

        ans=   ③  

    Next i

    Text2. Text= ans

End Sub

  1. (1) 按照上述加密算法,明文“B”生成的密文是
  2. (2) 请在划线处填入合适代码。

     ② ③ 

在Python中,abs( ):求绝对值,math模块中的sqrt( ):求平方根,以下程序运行的结果为(      )

A . 9 B . 8 C . 16 D . 10
在Python中,列表名.sort( )用于对列表中的元素进行(    )。
A . 求和 B . 求平均 C . 求最大数 D . 排序
某数据压缩方法描述如下:

①原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;②原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;③原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。

根据上述压缩方法,对应的解压缩方法示例如图所示。

小明学习了Python的PIL、matplotlib和numpy等模块知识后,现有图像文件“台州.bmp”,该文件的颜色模式为RGB,将该图像文件的每个像素点转换成灰度值(值为整数)后,使用上述压缩方法进行压缩并保存为文本文件。颜色RGB值转灰度值的公式如下:

灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量

  1. (1) 如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是
  2. (2) 实现上述功能的Python程序如下。请在划线处填入合适代码。

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt

    img = np.array(Image.open("台州.bmp"))

    row,cols,rgb = img.shape

    s=[]

    for i in range(row):

    for j in range(cols):

    r,g,b = img[i,j]

    hdz =

    s.append(hdz)

    ss = []:j = 0

    while j<len(s)-1:

    if s[j]!=s[j+1]:

    if s[j]!=0:

    ss.append(s[j])

    else:

    ss.extend()    #extend 函数用于在列表末尾一次性追加另一个序列中的多个值

    j+=1

    else:

    c = s[j]

    for k in range(j+1,len(s)) :

    if c!=s[k]:

    break

    else:

    ss.extend([0,k-j,s[j]])

    j=k

    if j!=len(s):

    ss.append(s[j])

    f = open("台州 255.txt","w+")

    f.write(",".join(map(str,ss)))

    f.close()

最近更新