alp='abcdefghijklmnopqrstuvwxyz0123456789 '
创新互联主要从事网站设计制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务江达,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
def num2alp(c):
a = alp[c]
return(a)
def alp2num(d):
if d != ' ':
return((ord(d)-97)%37)
else:
return 36
def envVigenere(key,plaintext):
m = len(plaintext)
n = len(key)
etext = ""
for i in range(m):
p = plaintext[i]
k = key[i%n]
num1 = alp2num(p)
num2 = alp2num(k)
num3 = (num1+num2)%37
f = num2alp(num3)
etext = etext + f
return(etext)
print(envVigenere('lemon','attack at dawn'))
试试这个,我发现你的问题有两个:
alp2num
函数有问题,应该再进行下mod37,并且应当对空格做特殊处理
key没有使用正确使用
str_1 = input("请输入一个字符串:")
num_num = 0
num_alp = 0
num_null = 0
num_else = 0
for s in str_1:
if s = '0' and s = '9':
num_num += 1
elif (s = 'a' and s = 'z') or (s = 'A' and s = 'Z'):
num_alp += 1
elif s == ' ':
num_null += 1
else:
num_else += 1
print("数字的个数:",num_num)
print("字母的个数:",num_alp)
print("空格的个数:",num_null)
print("其他的个数:",num_else)
运行结果:
请输入一个字符串:haha 123 ** 11
数字的个数: 5
字母的个数: 4
空格的个数: 3
其他的个数: 2
望采纳!
#coding=utf-8
def encode_key_text(key,text):
alp='abcdefghijklmnopqrstuvwxyz0123456789 '
num_key=[alp.find(i) for i in key]
num_text=[alp.find(i) for i in text]
if len(num_key)len(num_text):
num_long,num_short=num_text,num_key
else:
num_long,num_short=num_key,num_text
num_encode = [(num_short[i%len(num_short)]+num_long[i])%(len(alp)) for i in xrange(len(num_long))]
print num_encode
return ''.join([alp[i] for i in num_encode])
if __name__=="__main__":
key='lemon'
text='attack at dawn'
print encode_key_text(key,text)
当练手了,感兴趣可以关注我的python课程
‘’.join()的意思是字符串的拼接函数,可以将一个可迭代对象拼接成一个字符串。
比如说你这个s1是一个列表的话,用了这个最后形成的就是列表里的每一个元素都按照‘’这个进行拼接。‘’这个是一个空字符串,还可以‘,’这个意思是用逗号连接列表中的每一个元素。
alp很明显就是一个变量呀,最后返回给调用者,这个变量记录的是最大出现次数的那个元素。