浙江省A9协作体2023-2024学年高二下学期信息技术期中联考试卷
共 13 题 ; 32人浏览 ; 高二下学期
2024-05-30
一、选择题(共10题,共24分)
二、非选择题(共3题,共18分)
12.  小明打算结合micro:bit,编写一个口算练习程序,实现随机产生九九乘法口诀中的乘法或两数之和不大于 100的加法。具体功能如下:

①在电脑端输入出题数量n,依次生成 n道题目,每道题随机给出乘法或加法。

②每回答一道题时,若正确,则在 micro:bit端 LED阵列显示“笑脸”,否则显示“哭脸”。

③答完n道题目后,电脑端显示共练习了几道题,其中有几题回答正确。

电脑端程序:

import random

import serial

ser=serial.Serial()

ser.baudrate=115200

ser.port="COM4"

ser.open()

c=0;i=1

n=int(input("请输入题目数量:"))

while i<=n:

 r=random.randint(0,1)

 if r==0:

 a=random.randint(1,9)

 b=random.randint(1,9)

 print(str(a)+"×"+str(b)+"=")

 else:

 a=random.randint(10,99)

 b=random.randint(1099)

 while ①____:

 a=random.randint(10,99)

 b=random.randint(10,99)

 print(str(a)+"+"+str(b)+"=")

 ans=int(input("请输入答案:"))

 if r==0 and a*b==ans or r==1 and a+b==ans:

 ser.write("H".encode())

 c=c+1

 else:

 ser.write("S".encode())

 i=i+1

print("共练习了"+str(n)+"题,其中有"+str(c)+"题回答正确。")

micro:bit端程序:

from microbit import *

while True:

 if uart.any():

 incoming=str(uart.read(),"UTF-8")

 if :

 display.show(Image.HAPPY)

 else:

 display.show(Image.SAD)

(1) 请在划线①处填入合适的代码,完成电脑端程序。
(2) 结合电脑端程序分析,电脑端程序与 micro:bit通过串口号进行通信
(3) micro:bit端程序中加框处代码与题意不符,请改正。
(4) 为了方便多人通过网页直接进行口算练习,小明计划利用 Flask Web 框架开发网页版。服务器 IP地址为:192.168.10.109,Web服务端口为 8081。网站功能页面规划如下:

序号

访问地址

功能说明

1

/

主页,口算练习主要页面

2

/login

登录页,校对输入的用户名和密码是否正确。如正确则跳转到主页。

3

/history

历史记录页,显示用户自己答题的记录。

4

/wrong

错题页,显示用户自己错误的题目及高频错题。

根据网站页面规划,至少需要设计个视图函数。其中,访问错题页的URL是http://

综合题 困难
13.  编写一个加密程序,功能如下:输入明文和一串数字密钥,显示加密后的密文,加密算法如下:

①将明文逆序排列,如明文“Python.org”,逆序后为“gro.nohtyP”;

②循环利用数字密钥串的每一位数字 k,依次对字符串中的每个英文字母右移 k 个字母替代,其他字符保持不变。如:输入的数字密钥串为“2024”,“gro.nohtyP”的“n”是第 4个字母,使用密钥串“2024”中的第 4个数字“4”进行右移 4个字母替代,即“n”往后移 4个字母,得到的是“r”,如下表所示:

③经过数字密钥串处理后,将字符串中的每个字符转换为 8位二进制 ASCII码值(不足 8位的左边补 0,补足 8位),并分成两段(左边 4位为高四位,右边 4位为低四位),如字符“i”的二进制 ASCII码值为 01101001,高四位为 0110,低四位为 1001;

④将高四位转化为十六进制数(如 0110转化为 6);

⑤将低四位与高四位执行异或(⊕)操作后转化为十六进制数(提示:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0,如 1001⊕0110=1111,1111转化为 F);

⑥依次连接④⑤得到的两位十六进制数,即为该字符的密文,如“i”的密文为“6F”;

⑦将每个字符的密文按照顺序依次连接即为最终的密文。程序运行结果如图所示。

实现上述功能的 Python程序如下,请回答下列问题:

(1) 按照上述加密算法,经过数字密钥串处理后,字符“m”的密文是
(2) 请在划线处填入合适代码。

def xor(x,y): #两个一位二进制数异或

 if x==y:

 return "0"

 else:

 return "1"

def DtoB(D): #十进制转 8位二进制,高位段和低位段根据规则处理

 B=""

 for i in range(8):

 r=D%2

 D=D//2

 B=str(r)+B

 for j in range(4):

 B=B[:j+4] ++ B[j+5:]

 return B

mingw=input("请输入明文:")

key=input("请输入数字密钥串:")

mingw=

miw="";pos=0

for i in range(len(mingw)):

 if "A"<=mingw[i]<="Z" or "a"<=mingw[i]<="z":

 if "A"<=mingw[i]<="Z":

 t=ord("A")

 else:

 t=ord("a")

 miw+=chr((ord(mingw[i])-t+int(key[pos]))%26+t)

        

 else:

 miw+=mingw[i]

new=""

for i in range(len(miw)):

 new+=DtoB(ord(miw[i]))

 hex="0123456789ABCDEF";result="";

 for i in range(0,len(new),4):

 n=int(new[i])

 for j in range(1,4):

 n=n*2+int(new[i+j])

        

print("密文为:",result)

综合题 困难