恺撒密码 B
描述
恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C = (P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P = (C-3) mod 26
假设用户可能使用的输入仅包含西文字母,即英文大小写字母a~zA~Z和特殊字符,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
此题目是AutoOJ(自动评阅)类型,请注意:
1. 输入使用input(""),不要增加提示信息
2. 输出与要求一致
3. 不考虑异常输入情况
输入
示例1: python is GOOD!
输出
示例1: sbwkrq lv JRRG!
方法一:
s=input()
for i in s:
if i in['x','y','z','X','Y','Z']:
print(chr(ord(i)-23),end='')
elif 'a'<=i<='z' or 'A'<=i<='Z':
print(chr(ord(i)+3),end='')
else:
print(i,end='')
方法二:类似C语言的方法
s=input()
for i in s:
if 'a'<=i<='z':
print(chr((ord(i)-ord('a')+3)%26+ord('a')),end="")
elif 'A'<=i<='Z':
print(chr((ord(i)-ord('A')+3)%26+ord('A')),end="")
else:
print(i,end="")
3位水仙花数计算 B
描述
"3位水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
注意:这是一个OJ题目,输出格式要严格一致。
输入
无
输出
示例:634,412
(注意,这两个数字不是水仙花数)
ans=[]
for i in range(100,999):
x=str(i)
sum=0
for j in x:
sum+=pow(int(j),3)
if sum==i:
ans.append(i)
for i in range(len(ans)):
if i==len(ans)-1: print(ans[i])
else:print(ans[i],end=",")
说句心里话 A
描述
分两次从控制台接收用户的两个输入:第一个内容为"人名",第二个内容为"心里话"。
然后将这两个输入内容组成如下句型并输出出来:
(人名),我想对你说,(心里话)
此题目是AutoOJ(自动评阅)类型,请注意:
1. 输入使用input(""),不要增加提示信息
2. 输出与要求一致
输入
示例1:
人名
心里话
输出
示例1:
(人名),我想对你说,(心里话)
name=input()
talk=input()
print(name+",我想对你说,"+talk)
字符串垂直输出
描述
将输入的字符串垂直输出
输入格式
这是一个字符串
输出格式
多行字符串
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
string=input()
for i in string:
print(i)
词频统计之《哈姆雷特》
描述
Hamlet 《哈姆雷特》是莎士比亚的一部经典悲剧作品。这里提供了该故事的文本文件:hamlet.txt。
请统计该文件中出现英文的词频,按照如下格式打印输出前10个高频词语:
the , 1138
即:英文单词(左对齐,宽度为10)+ 逗号 + 词语出现的频率(右对齐,宽度为5)
要求与说明:
1. 标点符号及组合不算作英文词语
2. 同一单词的各种大小写形式记作一个词,如The和the相同
3. 在程序中,请使用文件名打开文件:hamlet.txt
# 仅作为示例
f = open("hamlet.txt", "r")
f.close()
输入
无
输出
示例1:the , 1138
(示例1仅用于检验输出格式,不计评判分数)
这个明明是统计前十个的,然而test点,第一组只有最多的那个,才能过,统计十个最高词量输出是个就会错。不过第二组test过不了,难受。。。。。
def getText():
txt=open("hamlet.txt",'r',encoding='utf-8').read()
txt=txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
txt=txt.replace(ch," ")
return txt
words=getText().split()
counts={}
for word in words:
if len(word)>1:
counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(1):///改成range(10)统计前十个词频最高的
word,count=items[i]
print("{:<10},{:>5}".format(word,count))