4.3.2 if…elif…else语句的应用 知识点题库

x=int(input(“请输入第1个数:”))

y=int(input(“请输入第2个数:”))

if x>y:

  print(x)

else:

  print(y)

程序运行后,键盘输入8和6,其输出结果为

高精度除法常用于计算两个数位较大的数之间的除法运算,设被除数为s1,除数为s2,保存在字符串中。除法的基本思想是反复做减法,s1能够被s2减多少次,商就是多少。但是这样做显然比较慢。如下算法做了部分优化,以48695除以324为例:

①将324扩大100倍,32400只能被48695减去1次,则百位上的商是1;

②将324扩大10倍,3240能被前一次余的16295减去5次,则十位上的商就是5;

③对于324,不能被最后剩余的95减去,则个位上的商为0。所以最后的商的整数部分为150。

程序运行界面如图所示。

  1. (1) 根据该算法计算5731423除以23345,十位上的商是
  2. (2) 阅读以下程序,在画线处填入合适的代码。

    Dim s1, s2, s3, s, ans As String

    Dim tot As Integer, t As Integer

    Private Sub Command1_Click( )

      Dim a, b, i, j, length As Integer

      s1=Text1.Text:s2=Text2.Text:s3=""

      Length=Len(s1)-Len(s2)

      For i=1 To length

          s2=s2+"0"

      Next i

      For i=0 To length

          s=Mid(s2, 1, Len(s2)-1):tot=0

          Do While   ①   or(Len(s1)=Len(s)And s1>=s)

              tot=tot+1

              ans="":flag=False

              a=Len(s1):b=Len(s)

              For j=a To 1 Step-1

                  t=0

                  If flag Then

                    t=-1:flag=False

                  End If

              If b>0 Then

                  t=t+Val(Mid(s1, j, 1))-Val(Mid(s, b, 1))

              Else

                  t=    ②   

              End If

              If t<0 Then

                     ③  

                  flag=True

              End If

              ans=t&ans:b=b-1

            Next j

            s1=Val(ans)

        Loop

        s3=s3&tot

      Next i

      i=1

      Do While Mid(s3,i,1)="0"

            i=i+1

      Loop

      Text3.Text=Mid(s3,i,Len(s3))

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

生成之形矩阵:在文本框中输入之形矩阵的行数n(3≤n≤10),点击“生成”按钮Command1后,在List1中显示结果,程序运行界面如图所示。

实现程序的代码如下,但加框处代码有误,请改正。

Private Sub Command1_Click( )

  Dim n,t As Integer,s As String

  n=Val(Text1.Text)

  For i=1 To n

      s=""

      If       Then     ‘①

        For j=1 To n

            t=t+1

            s=s+ads(t)

        Next j

      Else

        For j=1 To n-i

            s=s+"  "

        Next j

        t=t+1

              ‘②

      End If

      List1.AddItem s

  Next i

End Sub

Function ads(n As Integer)As String

  Dim a As Integer

  a=Len(CStr(n))    ‘函数CStr( )和Str( )功能类似,但输出字符时没有前导空格

  If a=1 Then

      ads="0"+CStr(n)

  Else

      ads=CStr(n)

  End If

End Function

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

根据上题的算法描述以下划线处填写Python程序代码。

数据连接(代码略)

userID = request.POST.get(‘txtUserID’)

userPassword = request.POST.get(‘txtPassword’)

cursor.execute(u""" Select * FROM [student] where [学号]

    = '%s' and 密码= '%s'""" %(userID,))

list=cursor.fetchall( )

:

   for row in list :

       request.session['userID']=

       request.session['userName']=

       return HttpResponseRedirect("")

else :

    warn= u"

对输入字符串中重复字符进行压缩,例如:字符串“aaabbc”压缩后就成为“3a2b1c”,

实现该功能的 VB 程序段如下:

s = Text1.Text: c = 1

For i = 2 To Len(s)

    If  Then

        c = c + 1

    Else

        s1 = s1 + Trim(Str(c)) + Mid(s, i - 1, 1)      ‘Trim函数用于移除字符串两侧的空字符

   

    End If

Next i

s1 = s1 + Trim(Str(c)) + Mid(s, i - 1, 1)

上述程序段两个方框处的语句分别为:(    )

A . Mid(s, i, 1) = Mid(s, i - 1, 1) c = 0 B . Mid(s, i, 1) = Mid(s, i - 1, 1) c = 1 C . Mid(s, i, 1) = Mid(s, i + 1, 1) c = 0 D . Mid(s, i, 1) = Mid(s, i + 1, 1) c = 1
编写VB程序,实现两位数a与b相乘的运算,其算法如下:

1)将被乘数a转换为二进制数;

2)将转换后的二进制数中每个数码乘以对应的权值,再乘以乘数b;

3)最后将各乘积相加,得到a与b相乘的结果。

图a显示了13与11相乘的过程:

 

在文本框Text1中依次输入被乘数与乘数(输入的字符仅限于数字字符、“*”及“/”,每两个乘数间用“/”分隔,并以“/”结尾),单击“计算”按钮Command1后,将计算结果

依次显示在文本框Text2中。程序运行界面如图b所示。

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

    Private Sub Command1_Click()

        Dim a As Integer, b As Integer, qz As Integer, sum As Integer

        Dim tx As String, c As String, tmp As String

            tx = Text1.Text: tmp=""

            n = Len(tx):sum = 0

            For i = 1 To n

                c = Mid(tx, i, 1)

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

                   

                ElseIf c = "*" Then

                    a = Val(tmp): tmp = ""

                Else

                    b = Val(tmp): tmp = ""

                End If

                If  Then

                qz = 1

                Do While a > 0

                    x = a Mod 2

                   

                    qz = qz * 2

                    a = a \ 2

                Loop

                s = s & Str(sum)

                a = 0: b = 0: sum = 0

            End If

        Next i

        Text2.Text = s

    End Sub

  2. (2) 程序中加框处代码有错,请改正。
  3. (3) 若文本框Text1中输入内容的结束符缺失(输入内容为13*10/15*20/16*20),单击“计算”按钮后,则上图中文本框Text2中显示内容为:
为庆祝新学期到来,某校学生会组织开展文体演艺活动,现按活动要求,将各班学生编排成“三角”队形。队形有以下要求:

第一排正中间安排1人;第二排正中间安排3人;第三排正中间安排5人……,如此循环,直至班级人数不足以站满一排后结束编排。

三角队形外围一圈的同学对服装有特殊要求,需要进行标记(中间的同学用“●”标记,外围的同学用“▲”标记)

编写VB程序,实现队形编排功能:在文本框Text l中输入班级人数,单击“展示队形”按钮Command1后,将班级学生队形显示在列表框List 1中。例如,当班级学生数为54的时候,程序运行界面如图所示。

图片_x0020_100010

  1. (1) 根据题意,如果输入的班级人数为70,则三角队形的最后一行人数为
  2. (2) 程序代码中加框处有错误,请改正。

    Private Sub Command 1_Click( )

        Dim i As Integer,j As Integer

        Dim cnt As Integer,nAs Integer,tmp As Integer

        Dim kw As String,zw As String,c As String

        List 1.Clear

        cnt=Val(Text 1.Text)

        n=0:tmp= 1

        Do While 图片_x0020_100011     ‘计算三角队形的行数

            cnt=cnt-tmp

            tmp=tmp+ 2

            n=n+1

        Loop

        For i=1 T on

            kw="":zw=""

            For j=i T on-1

                kw=kw+" "

            Next j

            If i=n The nc="▲" Else c="●"

            For j= 1 To 2*(i-1)-1

                zw=zw+c

            Next j

            IfThen

                ZW="▲"

            Else

                zw="▲"+zw+"▲"

            End If

            List 1.Add Item

        Next i

    End Sub

  3. (3) 实现队形编排功能的VB程序如下,请在划线处填入合适的代码。
有如下VB程序段:

Dim i As Integer, c As String, s As String, t As Integer

Dim s2 As String, pwd As String

   s= Text1.Text: pwd = "71zhYEAR":s2= ":t= 0

   For i= 1 To Len(s)

      c= Mid(s, i, 1)

      If c>= "0" Andc <= "9" Then

         t=t* 10 + Val(c)

      Else

         s2 = s2 + Mid(pwd, tMod8 + 1, 1)

      End If

   Next i

   Text2.Text= s2

运行该程序段,在文本框Text1中输入“20B13A8",文本框Text2输出的是(      )

A . hY B . YE C . YE7 D . hYA
VB中标准函数功能的实现是在VB内部通过相应的程序代码完成的。为了探索Val函数功能实现的原理,编写了以下程序。已知Val(“12”)的结果为12,即Val函数的功能是将字符型转换成数值型;而Val(“12AB”)和 Val(“12AB34”)的结果也为12,即在转换的时候如果遇到非数字符号就停止转换。编写模拟转换过程的时候,为简化程序,只考虑正整数的转换。运行程序时,在文本框Text1中输入字符串,点击命令按钮Command1后在文本框Text2中显示结果,运行结果如图所示。

VB程序如下,请回答以下问题:

Private Sub Command1_Click()

    Dim s As String, ch As String

    Dim i As Integer

    Dim r As Integer, result As Integer

    Dim flag As Boolean

    s = Text1.Text

    i = 1:result = 0:flag = True

    Do While

        ch = Mid(s, i, 1)

        r =    ①  

        If r > 9 Or r < 0 Then

            flag = False

        Else

               ② 

        End If

        i = i + 1

    Loop

    Text2.Text = Str(result)

End Sub

  1. (1) 窗体对象的Caption属性值为:
  2. (2) 加框处语句有错,请改正:
  3. (3) 请将横线处的语句补充完整

     ② 

寻找字符串中连续数字(全部都是1位数)之和为k的子串,如字符串“20210521”中和为6的子串为“105”。实现该功能的程序段如下,请完善程序:

s=input("请输入数字字符串")

i=0;j=0;k=6;sum=0

while j<len(s):

    sum=sum+int(ch1)

    while sum>k:

        ch2=s[i]

        i=i+1

    if sum==k:

print("子串为:",)

break

    j=j+1

else:

print("没有满足要求的子串。")

有如下程序段:

Dim i As Integer, Sum As Integer

Dim a(1 To 11) As Integer

Sum = 6

a(11) = 49

For i = 10 To 1 Step -1

    a(i) = a(i + 1) - 1

    If a(i) Mod 3 = 0 Then Sum = Sum + a(i)

Next i

Text1.Text = Str(Sum)

该程序段运行后,文本框text1中显示的内容是(   )

A . 174 B . 180 C . 36 D . 42
程序运行后,从键盘输入781,结果是.

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

if x%2==0:

    print(x,"是偶数.")

else:

print(x,"是奇数.")

恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码:

def CaesarCipher( ):

    c=mingwen.get("0.0", "end")   

    b=""

miwen.delete("0.0", "end")

for i in range(len(c)):

    if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':

b=b+chr(ord(c[i])①)    #生成密文

        elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': 

            b=b+chr(ord(c[i])②)     #生成密文

        else:

            b=b+c[i]

miwen.insert("0.0",b) 

下列说法正确的是(    )

A . ①的位置填写-3 B . ①的位置填写+3、②的位置填写-23,或-26+3 C . ①的位置填写-23 D . ②的位置填写+3
阅读下列程序,写出运行结果

警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)

persons=[‘甲’,‘乙’,‘丙’, ‘丁’]

for thief in persons:

flag =(thief!=‘甲’)+(thief==‘丙’)+(thief ==‘丁’)+(thief!=‘丁’)

if flag == 3:

print(thief)

运行结果是:

小凡有好多活页本,记录了各门课的错题。然而,他淘气的弟弟把这些活页本都拆了,并且活页纸散落在房间各地。小凡在房间里捡了若干张活页纸,每张纸都有活页本编号和其对应的页码。现在他要统计每本活页本上剩余还有哪些页码,为了能快速的整理,按照以下规则存储:对于同一本活页本上的纸张,则记录连续序列的起始和结尾编号。例如第1本活页本上的纸张页码有1,3,4,5,8,9,则记录为1-1,3-5,8-9。他编写了VB程序来解决这个问题,功能如下:共有k本活页本,每本最多有n张活页纸,总共有sum张活页纸,每张纸的编号和页码显示在列表框List1中,每一行前两位数表示该页对应的活页本编号,后一个数表示其对应页码;程序运行时,点击“整理”按钮Command1,在列表框List2中显示整理后的结果。程序运行界面如图所示。

请回答下列问题:

  1. (1) 若要将按钮中显示的“整理”修改为“纸张整理”,则需修改按钮的属性。
  2. (2) 实现上述功能的VB代码如下,请在划线处填入合适的代码。

    Const n=40

    Const k=5

    Dim f(1 To 500)As String

    Dim sum As Integer

    Private Sub Form_Load()

        '读取sum张纸的信息,存入到数组f并显示在列表框List1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer,j As Integer,t As Integer,tmp As Integer

        Dim a(500)As Integer,b(500)As Integer

        Dim c(500)As Integer,d(500)As Integer

        '读取每张纸信息,将页码存入到a数组中,活页本编号存入到b数组中

        For i=1 To sum

            a(i)=Val(Mid(f(i),4))

            b(i)=

        Next i

        For i=1 To sum-1    '对每一页先按照活页本编号、再按照页码从小到大排序

            t=i

            For j=i+1 To sum

                If  Then t=j

            Next j

            tmp=a(i):a(i)=a(t):a(t)=tmp

            tmp=b(i):b(i)=b(t):b(t)=tmp

        Next i

        c(1)=a(1)    '对于每个奇数位i,c(i)与c(i+1)分别存储连续页码的起始编号和结尾编号

        d(1)=b(1)

        s=1

        t=a(1)

        For i=2 To sum

            If b(i)=b(i-1)And t+1=a(i)Then

               

            Else

                c(s*2)=t

                s=s+1

                =a(i)

                d(s)=b(i)

                t=a(i)

            End If

        Next i

        c(s*2)=t

        List2.AddItem "第1本书:"

        List2.AddItem Str(c(1))+"-"+Str(c(2))

        For i=2 To s

            If d(i)<>d(i-1)Then List2.AddItem"第"+Str(d(i))+"本书:"

            List2.AddItem Str(c(2*i-1))+"-"+Str(c(2*i))

        Next i

    End Sub

  3. (3) 程序中加框处代码有误,请改正。
S=0

FOR I= 1 TO 100

    IF I MOD 2 =0 THEN S=S+I 

NEXT I

PRINT S

这段程序的功能是(    )

A . 求1——100间的奇数和。 B . 求1——100间的偶数和。 C . 求1——100间的偶数个数。 D . 求1——100间的奇数个数。
水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3=153。这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。

[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。请阅读如下python程序,在横线处填写适当的表达式或语句,使程序完整。

print ("三位数之内的水仙花是:")

for x in(100,1000):

    b=x//100

    s=(x//10)

    g=

    If x=(b**3 +s**3+g**3):

        print(

小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?

例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表List1显示出列的顺序编号,文本框Text1中显示最后留下的编号,程序代码如下,请在划线处填入合适的代码。

Private Sub Command1_Click()

    Dim s,f,t As Integer

    Dim a(1 To 400) As Boolean

    For i=1 To 400

        a(i)=False

    Next i

    s=0:f=0:i=0

    Do While f<399

        i=i+1

        If i=401 Then i=   

        If a(i)=False Then s=s+1

        If s=2 Then

             

            List1.AddItem Str(i)

            a(i)=True

            f=  

        End If

    Loop

    For i=1 To 400

        If    Then Text1.Text=Str(i) 

    Next i

End Sub

“猜数游戏”要求如下:系统自动生成一个100以内随机的正整数,用户有5次猜数机会,如果猜中提示“恭喜你,猜对了!”;提示“偏大”或“偏小”,然后继续猜数。如果5次都未猜中,计算机公布答案,并提示“5次都没有猜中,游戏结束!”。

补全以下程序代码:

import random

num=random.randint(1,100)

n=5

flag=True

while:

    guess=int(input("请输入猜测的数:"))

if guess<num:

        print("偏小")

        n=n-1

elif guess>num:

        print("偏大")

        n=n-1

else:

        print("恭喜你,猜对了!")

        flag=False

        break #跳出当前循环,执行循环后的语句

if flag:

    print("答案是:"+str(num)+"5次都没有猜中,游戏结束!")

请补全程序。

用python编辑器打开“Y\103”下的文件“计算1-2+3-4...+99-100的值.py”,进行以下操作并保存结果

①请填空完善该程序,实现功能:计算表达式s=1-2+3-4……+99=100的值并输出结果;

②编写完成后原名保存并关闭应用软件。

s=0

for i in range(1,):

  if :

        s=s-i

  else:

      

print()

最近更新