第二次作业
恺撒密码 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. 不考虑异常输入情况
s = input("")
t = ""
for c in s:
if 'a' <= c <= 'z':
t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
elif 'A'<=c<='Z':
t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
else:
t += c
print(t)

括号配对检测 A
描述
用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:
配对成功,配对不成功
其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。
注意,这是一个OJ题目,获得输入使用input("")。
str=input("")
left=0
for i in str:
if i == "(":
left += 1
elif i == ")":
if left > 0:
left -= 1
else:
print("配对不成功")
break
else:
if left != 0:
print("配对不成功")
else:
print("配对成功")

天天向上的力量 B
描述
一年365天,以第1天的能力值为基数,记为1.0。当好好学习时,能力值相比前一天提高N‰;当没有学习时,由于遗忘等原因能力值相比前一天下降N‰。每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是1到10,N可以是小数。
获得用户输入N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用“逗号+空格”格式。
此题目是OJ题,使用input("")获得N。
import math
dayup=math.pow((1.0+0.01),365)
daydown=math.pow((1.0-0.01),365)
print("努力:{:.2f},不努力:{:.2f}".format(dayup,daydown))

n=eval(input())
dayup=(1.0+n/1000)**365
daydown=(1.0-n/1000)**365
print('%.2f,%.2f,%d'%(dayup,daydown,dayup/daydown))

percent=eval(input())
hard=sunning=1
for i in range(2,366):
hard*=(1+percent/1000)
sunning*=(1-percent/1000)
print('%.2f,%.2f,%d' %(hard,sunning,hard/sunning))

import math
n=eval(input())
dayup=math.pow((1.0+n/1000),365)
daydown=math.pow((1.0-n/1000),365)
print('%.2f, %.2f, %d'%(dayup,daydown,dayup/daydown))

同符号数学运算
描述
读入一个整数N,分别计算如下内容:
1. N的绝对值;
2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。
将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。
n=eval(input())
if n>=0:
n=abs(n)
print(n ,abs(n+10) ,abs(n-10) ,abs(n*10))
else:
n=abs(n)
print(n ,-abs(n+10) ,-abs(n-10) ,-abs(n*10))





快乐的数字
描述
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是一个快乐的数字,计算过程如下:
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
当输入时快乐的数字时,输出True,否则输出False。
def happy(n):
try:
if n==1:
print('True')
else:
new = str(n)
sum = 0
for c in new:
sum += int(c)**2
return happy(sum)
except Exception as e:
print('False')
# print(e)
n = eval(input())
happy(n)
字符串反码 A
描述
字符串反码的定义为:字符串所包含字符的反码组成的字符串。
字符反码的定义为:
(1) 对于小写英文字符,它的反码也是一个小写英文字符,且该字符与'a'的距离等于其反码与'z'的距离;
(2) 对于大写英文字符,它的反码也是一个大写英文字符,且该字符与'A'的距离等于其反码与'Z'的距离;
两个字符距离指其对应unicode编码之差。
n=input()
for i in n:
if ord("a") <= ord(i) <= ord("z"):
print(chr(ord('z')-(ord(i)-ord('a'))),end='')
elif ord("A") <= ord(i) <= ord("Z"):
print(chr(ord('Z')-(ord(i)-ord('A'))),end='')
else:
print(i,end='')
5579
计算矩形面积
描述
用户输入矩形的长和宽,计算其面积并输出,结果四舍五入,保留2位小数。
输入格式
第一行输入一个数字,代表矩形的长
第二行输入一个数字,代表矩形的宽
x=eval(input())
y=eval(input())
print(round(x*y,2))
36
格式化输出
描述
用户输入一个小数,用format格式化输出,保留3位小数。
n=eval(input())
print('{:.3f}'.format(n))
9273
字符串逆序输出
描述
用户输入一个字符串,倒序输出。
输入格式
输入一个字符串
str1 = input()
print(str1[::-1])
50
照猫画虎求阶乘
描述
阶乘是基斯顿·卡曼(Christian Kramp)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。
任何大于等于1 的自然数n 阶乘表示方法:![]()
a = int(input())
b = 1
for i in range(1, a+1):
b = b*i
print("{}".format(b))

浙公网安备 33010602011771号