4.1.4 Python的函数 知识点题库

对数组a中的n个元素进行排序,生成左右交替上升的数据序列,结果如下表所示:

a(1)

a(2)

a(3)

……

a(n-2)

a(n-1)

a(n)

27

35

39

……

49

39

33

小华由此设计一个VB程序,功能如下:单击“排序”按钮Command1,随机生成10个两位奇数,将随机生成的数据序列显示在文本框Text1中,在文本框Text2中显示完成排序后的数据序列,运行结果如图所示。

Private Sub Command1_Click()

  Dim a(1 To 10) As Integer

  Randomize

  Const n = 10

  For i = 1 To n

      a(i) = ①

      Text1.Text = Text1.Text + Str(a(i))

  Next i

  For i = 1 To n \ 2

      For j = n - i + 1 To i + 1 Step -1

          If a(j) < a(j - 1) Then

              t = a(j - 1)

                ②

              a(j) = t

          End If

      Next j

      For j = i + 1 To n - i

          If  Then

              t = a(j): a(j) = a(j + 1): a(j + 1) = t

          End If

      Next j

  Next i

  For i = 1 To n

      Text2.Text = Text2.Text + Str(a(i))

  Next i

End Sub

  1. (1) 代码Command1_Click()中的Click属于(单选,填字母:A .对象名/B .事件名/C .方法名/D .事件处理过程名)。
  2. (2) 程序中①处的代码可能是          (单选,填字母)。
    A . Int(Rnd * 88) + 11 B . Int(Rnd * 89) + 11 C . Int(Rnd * 44) * 2 + 11 D . Int(Rnd * 45) * 2 + 11
  3. (3) 程序中②处填入合适的代码
  4. (4) 程序代码中,加框处语句有错,请改正。
为保证信息传输的准确性,可在一段ASCII字符后面插入一个验证字符加以验证。验证字符生成规则如下:

①从左往右依次获取各字符的ASCII码值;

②对奇数位字符的ASCII码值做加法处理,对偶数位字符的ASCII码值做减法处理;

③将上述结果取绝对值后除以26求余数,余数为0~25,分别对应大写字母A~Z,则该大写字母即为验证字符。

小李编写字符串验证程序,功能如下:在文本框Text1中输入待检验字符串(最后一位为验证字符),点击按钮Command1,在标签Label1中显示输入字符串是否验证成功。程序运行界面如图所示。

  1. (1) 按照该规则,字符串“2021”的校验码是(注:字符“0”的ASCII码值为 48,字符“A”的ASCII码值为65,数字、字母 ASCII 码值均按序以 1 递增)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s As String, t As String

        Dim cha As Integer, ans As Integer

        Dim a As Integer, b As Integer, i As Integer

        s =

        t = Mid(s, Len(s), 1)

        ans = 0

        For i = 1 To Len(s) - 1

            cha = Asc(Mid(s, i, 1))

            If Then

                ans = ans - cha

            Else

                ans = ans + cha

            End If

        Next i

        ans = Abs(ans) Mod 26

        If  Then

            Label1.Caption = "验证成功!"

        Else

            Label1.Caption = "验证失败!"

        End If

    End Sub

  3. (3) 程序中加框处代码有误,请改正。
一位茶叶商人从南方收购了 n 吨新茶,由于产地偏僻不通铁路,茶商准备先沿水路运到武汉,再发往全国各地销售。码头上只有 10 条规格不同的小货船,每条船舶都不足以装载全部茶叶。各船舶的最大载重量分别为 W(i)吨,需 f(i)费用(该艘船每吨的费用)(1≤i≤10)。当然,由于茶商是老主顾,而且货船舶还可以搭配载其他货物,因此船主比较客气,声称可以装一部分货物,按实际装多少货物计费(例如,只装了 1/3 吨,则费用为 1/3*f(i))请问茶商应该选择哪些货船,使得费用最低。若有费用相同,输出用船数最少的。

解题思路:随机生成 10 条船的载重量[1,10]和费用[1,30],然后将它们按费用从小到大排序,若费用相同,则载重大的在前,运输时,先把费用低的船装满,再按费用向下将船装好,运输。

  1. (1) 根据图a所示,可以发现有 (填数字)个对象没有 caption属性。

    图 a

  2. (2) 根据上述描述设计如下 VB 程序,请在划线处填入合适的代码。

    Dim f(1 To 10) As Integer, w(1 To 10) As Integer, b(1 To 10) As Integer

    Private Sub Command2_Click()

        Dim n As Integer, count As Integer, yf As Integer

        Dim s As String, i as integer

        n = Val(Text1.Text)

        count = 0

        yf = 0

        cz = n

        i = 1

        Do While n > 0

            If n >= w(b(i)) Then

               

            Else

                yf = yf + n * f(b(i))

            End If

            count=count+1

            s = s + Str(b(i)) + "号船"

            i=i+1

           

        Loop

        Label2.Caption = "总计费用为:" + Str(yf) + "元 " + Str(count) + " 条船,分

    别为 " + s

    End Sub

    Private Sub form_load()

        Dim t As Integer, i as integer, j as integer

        List1.Clear

        List1.AddItem "编号 载重 费用'"

        For i = 1 To 10

            w(i) = Int(Rnd * 10 + 1)

            f(i) = Int(Rnd * 30 + 1)

            b(i) = i

            List1.AddItem Str(b(i)) + " " + Str(w(i)) + " " + Str(f(i))

        Next i

        For i = 1 To 9

            For j = 10 To i + 1 Step -1

                If  Then

                    t = b(j): b(j) = b(j - 1): b(j - 1) = t

                End If

            Next j

        Next i

    End Sub

python中表示跳出循环的函数是(    )
A . continue B . break C . ESC D . close
对一段字符(仅包含大小写字母和数字)加密,加密规则为:①字母和数字都往后循环顺移3位,如“a”变为“d”,“y”变为“b”;“0”变为“3”,“7”变为“0”②加密后字母在前,数字在后③字母按逆序排列,数字按顺序排列,如输入明文“ab7Z8x3”,这密文为“aCed4016”。

小王利用VB程序实现这一加密功能,程序界面和代码如下所示:

Private Sub Com_ jm_ Click()

    Dim x As String, ch As String, cl As String

    Dim s1 As String, s2 As String, s As String

    Dim i As Integer, n As Integer, y As Integer

    x= Text1. Text

    n=Len(x)

    For i=1 To n

        ch= Mid(x, i, 1)

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

               ①     

            s2=s2 & y

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

            y=(Asc(ch)-Asc("a")+3) Mod 26

                 ②   

            s1=c1+s1

        Else

            y=(Asc(ch)- Asc("A")+3) Mod 26

            c2=Chr(Asc("A")+y)

            s1=c2+s1

        End If

    Next i

        ③  

    Text2 Text=s

End sub

  1. (1) 根据程序代码分析,“加密”按钮的名称是
  2. (2) 根据加密规则,明文“9G78fbY5”,则密文为
  3. (3) 请在画线处填入合适的代码:

     ② ③ 

在平面坐标系中,给定任意个点,求出这些点中与点(1,1)距离最远的点。小李编写出了相应功能的程序:在文本框Text1中输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这些点到(1,1)的距离后,结果显示在列表框List1中,并且输出最大距离的点。程序运行界面如图所示。

  1. (1) 由图可知,窗体中的对象共有类;
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i, k As Integer

        Dim x1, y1, x2, y2 As Single

        Dim v As Singie, maxd As Single

        Dim s As String, pos zb As String

        List1.Clear

        s=Text1.Text

        x1=1: y1=1

        t="": k=1: j=1

        List1.AddItem"坐标点" & "距离"

        For i=1 To Len(s)

            If Mid(s, i, 1)="," Then

                v=Val(Mid(s,j,i-j))

                j=

                If k Mod 2=1 Then

                    x2=v

                Else

                    y2=v

                    d=Sqr((x2-x1)^2+(y2-y1)^2)

                    If Then

                        maxd=d

                        pos="(" & Str(x2)& "," & Str(y2)& ")"

                    End If

                    List1.AddItem"(" & Str(x2)& "," & Str(y2)& ")" & Str(d)

                End If

                k=k+1

            End If

        Next i

        Label1.Caption="距离(1, 1)最远的点为"& pos &"距离为"& Str(maxd)

    End Sub

  3. (3) 若文本框Text1中输入的内容为“31,41,26,51,1,56”,程序运行结束后,距离(1,1)最远的坐标点是
下面程序的功能是:产生20个[1,100]范围内的随机整数,并统计这20个随机数中的整数的个数(重复出现算1个),结果显示在标签Label1中。例如:5个随机数[10,20,20,31,32]中不重复数字个数为3。程序部分代码如下:

count = 0

For i = 1 To 20

    a(i) = Int(Rnd ∗ 100) + 1

Next i

For i = 1 To 20

          

Next i

For i = 1 To 100

    If b(i) <> 0 Then count = count + 1

Next i

Label1.Caption= "不重复数字个数" + Str(count)

为实现上述功能,则程序①处应填入的语句为(   )

A . b(i)=1 B . b(a(i))=a(b(i))+1 C . b(i)=b(i)+1 D . b(a(i))=b(a(i))+1
下列VB表达式的值最小的是(    )
A . Val(Mid("7.82653",3,1)) B . Len("-2+8") C . Asc("g")-Asc("b") D . 55 Mod5* 15\9
有如下VB程序段:

Dim a(1 To 9) As String, k As Integer

Dim s1 As String, s2 As String

s1= Text1.Text:s2 = Text2.Text

For i = 1 To Len(s1)

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

    a(k) = Mid(s2, i, 1)

Next i

For i=1 To 9

    s=a(i)+s

Next i

Label1.Caption = s

在文本框Text1中输入“52463”,文本框Text2中输入“happy”, 执行该程序段后,标签Label1中显示的内容是(    )

A . happy B . yppah C . phpya D . Pyhpa
下列VB表达式的值最大的是(      )
A . Val(Mid("235",2,2)) B . Len("333") +5 C . Int (Rnd*10) +25 D . Sqr(25) + Int(12.5)
下列VB程序段的输出结果是(    )。

a=5: b=10

m=(a+b)/2+Abs(a-b)/2

Print“m=”; m

A . m=10 B . m=5 C . 10 D . 5
在Python中,input( )函数的返回结果的数据类型为(   )
A . Number型 B . String型 C . List型 D . Sets型
有如下程序段:

map =“ 01234567890123456789012345”

tel = Text1.Text

For i = 1 To Len(tel)

    c = Mid(tel, i, 1)

    If c >=“ 0” And c <=“ 9” Then

        s = s + c

    ElseIf c >“ A” And c <=“ Z” Then

        s = s + Mid(map, Asc(c) - Asc(“A”) + 1, 1)

    End If

Next i

在text1 文本框中输入“hi,NICETOSEEYOU-2016”,程序执行完后s 的结果是( )

A . 1602726222282016 B . 2713837333392016 C . 44,1602726222282016-2016 D . 3824948444402016
有如下Python程序段:

import jieba

str="热烈庆祝建党100周年"

fc=jieba.lcut(str)

print(fc)

for i in fc[::1]:

    print(i)

已知分词之后的文本输出fc为:['热烈庆祝', '建党', '100', '周年'],则程序运行结束后的结果是(        )

A . 周年100建党热烈庆祝 B . 热烈庆祝

建党

100

周年

C . 热烈庆祝建党100周年 D . 年周001党建祝庆烈热
在一次比赛中,需要随机给10名选手各编一个0~9范围内的唯一序号,对应的Python程序段如下:

____

a,b=[0]*10,[False]*10

i=0

while i<=9:

  ____

  if not b[r]:

    a[i]=r

    ____

  i=i+1

print(a)

则划线处的代码依次是(        )

① r=random.randint(0,10)

② b[r]=True

③import random

④ b[i]=True

⑤from random import randint

⑥ r=random.randint(0,9)

A . ⑤①② B . ⑤⑥④ C . ③①④ D . ③⑥②
执行下列Python语句后,输出结果为(   )

a=int(2.9)

print(a)

A . 2.9 B . 2.90 C . 3 D . 2
下列代码的输出结果是(  )

s=[1,3,5,7,9]

s.insert(2,6)

print(s)

A . [1,3,5,7,9,2] B . [1,3,5,7,9] C . [1,6,3,5,7,9 ] D . [1,3,6,5,7,9 ]
如果输入的值,a 为 12,b 为 3,请问下列程序的输出结果是(    )

a=input()

b=input()

c=a+b

print(c)

A . 15 B . 12+3 C . 123 D . 以上答案均不对
Python语言中的“ord”是将字符转换为对应存储编码的函数,编码值以十进制数形式显示,例如>>>ORD(‘a’),输出的结果是:97,则>>>ord(d)输出结果为(    )
A . 102 B . 100 C . 98 D . 110
下面是“打印矩形.py”,正确答案是(   )。

请填空完善该程序,实现功能:按程序提示依次输入行和列的数字,则按行列打印由“*”组成的矩形。例如,按提示输入:

请输入行数:3

请输入列数:5

屏幕将打印以下图形:

a=int(input("请输入行数:"))

b=  ①  

for i in range(  ②  ):

    for j   ③  

        print(  ④  , end=' ')    #end=' '表示接上一个输出项后输出,不换行

print( )

A . ① int(input("请输入列数:"))  ② a+1  ③in range(b)      ④‘*’ B . ① int(input("请输入行数:"))  ② a+1  ③in range(b+1)    ④‘**’ C . ① int(input("请输入列数:"))  ② a     ③in range(b)      ④‘*’ D . ① int(input("请输入列数:"))  ② a     ③in range(b+1)    ④‘**’
最近更新