①小写英文字符按照英文字母“a”“b”……“y”“z”的排列顺序,取其前一个小写英文字符作为密文进行重组;
②规定小写英文字符“a”的前一个密文小写英文字符是“z”;
③其他字符按原字符连接;
例如:明文“My@class”加密后的密文是“Mx@bkzrr”。
实现上述功能的 Python 程序代码如下:
s = input("请输入明文:")
ans = ""
for i in ①____:
print("密文结果为:", ans)
A. if "a"<=i<="z": ans+=chr(ord(i)-1) else: ans+=i | B. if "a"<=i<="z": ans+=chr((ord(i)-ord("a")+25)%26+ord("a")) else: else: ans+=i |
C. if "a"<=i<="z": ans+=chr((ord(i)-1)%26) else: ans+=i | D. if "a"<=i<="z": ans+=chr((ord(i)-ord("a")+25)%26+ord("i")) else: ans+=i |
①将明文逆序排列,如明文“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)
a = [ 6 , 12 , 9 , 20 , 8 , 11 , 4 ]
for j in range( 1 , len( a ) ) :
if a[ j ] < a[ j - 1 ] :
a[ j ] = a[ j ] + a[ j - 1 ] ; a[ j - 1 ] = a[ j ] - a[ j - 1 ] ; a[ j ] = a[ j ] - a[ j - 1 ]
执行该段程序后,列表a的值是( )
lst = [2,5,2,1]
y = [1,1,1,1]
n = len(lst)
for i in range(①____):
for j in range(②____):
if ③____:
y[j] = y[j] + 1
else
y[i] = y[i] + 1
上述程序段3个划线处的表达式分别为( )
图a
import pandas as pd
df = pd.read_excel("ddsl.xlsx") #读文件中的数据
df= df.drop(["日期","订单号","单价","金额"],axis=1) #删除列
dfg = df.groupby(" ① ",as_index= False).sum() #分组求和
dfs = ②
plt.bar(dfs["菜品"], dfs["份数"]) #绘制柱形图
#设置图表样式,显示图表代码略
图b
①
def isprime(m):
i=2
while i<=int(m**0.5):
if:
return False
i+=1
return True
for i in range(4, 1001, 2):
flag=False
for j in range(2, i):
if:
print(str(i)+"验证成功")
flag=True
break
if:
print(str(i)+"验证失败")
实现功能:键盘上输入任意一个正整数,将其按冰雹猜想的规则进行拆解,输出每一步拆解的值和总步数,验证其是否符合冰雹猜想。
冰雹猜想是指:一个正整数,如果是奇数就乘以3再加1,如果是偶数就对它除以2(如下图),这样经过若干次,最终回到1。无论这个过程中的数值如何庞大,就像瀑布一样坠落,在经过若干次的变换之后也必然会到纯偶数:4-2-1。
N变为
x=(input("请输入任一正整数:"))
n=0
while():
if (x%2 != 0):
x=
else:
x=int(x/2)
print(, end=" ")
已知斐波拉契数列1,1,2,3,5,8,1321……其定义如下:
f(a)=
求斐波拉奖数列第n项的值。
def f(n): #定义递归函数
if n==1 n==2:
return 1
else:
return
n=int(input("请输入正整数n的值:"))
print() #打印结果
求解如下分段函数的值。
y=
x=float(input("请输入x的值:"))
if :
y=-2*x-4
x<10:
y=(x+2)**0.5
else:
y=2**(x-1)
print()