①将明文逆序排列,如明文“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程序如下,请回答下列问题:
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)
①在电脑端输入出题数量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 | /login | 登录页,校对输入的用户名和密码是否正确。如正确则跳转到主页。 |
3 | /history | 历史记录页,显示用户自己答题的记录。 |
4 | /wrong | 错题页,显示用户自己错误的题目及高频错题。 |
根据网站页面规划,至少需要设计个视图函数。其中,访问错题页的URL是//。
图a
为分析该年部分气温情况,编写 Python程序,请回答下列问题:
图b
实现该功能的程序如下,请在划线①处填入合适的代码。
划线②处应选填入的代码为(单选,填字母)。
A .df1 B .df1.values C .df1.index
import pandas as pd
df=pd.read_excel(" ① ")
df["日均温"]=(df["最高气温℃"]+df["最低气温℃"])/2
df1=df.sort_values("日均温",ascending=False).日均温.head(1)
Max= ②
date=[ ]
for i in range(len(df)):
if df.at[i,"日均温"]==Max:
date.append(df.at[i,"日期"])
print("日均温最高值:"Max,"℃")
print("日期:",date)
图c
df["月份"]=""
for j in range(len(df)):
df.at[j,"月份"]=df.at[j,"日期"][5:7]
df2=df.groupby("月份",as_index=True).③
plt.plot(④,df2["日均温"],label="月均温" )
plt.xlabel("月份")
plt.ylabel("温度℃")
plt.legend()
plt.show()
import random
a=[0]*6
for i in range(6):
a[i]=random.randint(1,10) #随机生成 1到 10范围内的整数
for i in range(5):
if i%2==0 and a[i]>a[i+1]:
a[i],a[i+1]=a[i+1],a[i]
else:
a[i]+=1
print(a)
执行该程序段后,a的值可能的是( )
s="78.166.97.89."
n=len(s);c="";max=""
for i in range(n):
if "0"<=s[i]<="9":
c=s[i]+c
else:
if c>max:
max=c
c=""
print(max)
执行该程序后,输出的结果是( )
s=input()
n=len(s);c=1;max=1
for i in range(1,n):
if (1)____:
c=c+1
if c>max:
max=c
else:
划线处可选代码为①c=1 ②c=0 ③s[i]<s[i+1] ④s[i]>s[i-1]
划线处正确的语句依次为( )