第二周python作业
一:凯撒密码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和特殊字符,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
s=input() c='' for t in s: if('a'<=t<='z'): c+=chr(ord('a')+((ord(t)-ord('a')) \ +3)%26) elif('A'<=t<='Z'): c+=chr(ord('A')+((ord(t)-ord('A')) \ +3)%26) else: c+=t print(c,end='')
二:括号配对检测
描述:用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:
配对成功,配对不成功
其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。
注意,这是一个OJ题目,获得输入使用input("")。
s=input() a=0 b=0 i=0 c=0 for i in range(len(s)): if s[i]=="(": a+=1 elif s[i]==")": if a>b: b+=1 else: c+=1 if (a>0 and b>0 and a==b)or(c==len(s)): print("配对成功") else: print("配对不成功")
三:天天向上的力量
描述:一年365天,以第1天的能力值为基数,记为1.0。当好好学习时,能力值相比前一天提高N‰;当没有学习时,由于遗忘等原因能力值相比前一天下降N‰。每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是1到10,N可以是小数。
获得用户输入N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用“逗号+空格”格式。
m=(eval(input())) N=m/1000 dayup=pow((1+N),365) daydown=pow((1-N),365) day=int(dayup//daydown) print("%.2f, %.2f, %d"%(dayup,daydown,day))
四:同符号数学运算
描述:读入一个整数N,分别计算如下内容:
1. N的绝对值;
2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。
将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。
N=eval(input()) a=abs(N) if N<0: b=-abs(a+10) c=-abs(a-10) d=-abs(a*10) else: b=abs(a+10) c=abs(a-10) d=abs(a*10) print(a, int(b), int(c), int(d))
五:快乐的数字
描述:编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是一个快乐的数字,计算过程如下:
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
def num(n): s=0 while n: r=n%10 n=n//10 s+=pow(r,2) return(s) n=int(input()) i=0 while i<200: i+=1 n=num(int(n)) if n==1: print(True) break else: print(False)
六:字符串反码
描述:字符串反码的定义为:字符串所包含字符的反码组成的字符串。
字符反码的定义为:
(1) 对于小写英文字符,它的反码也是一个小写英文字符,且该字符与'a'的距离等于其反码与'z'的距离;
(2) 对于大写英文字符,它的反码也是一个大写英文字符,且该字符与'A'的距离等于其反码与'Z'的距离
s=input() for t in s: if('a'<=t<='z'): c=chr(ord('z')-(ord(t)-ord('a'))) elif('A'<=t<='Z'): c=chr(ord('Z')-(ord(t)-ord('A'))) else: c=t print(c,end='')
七:计算矩形面积
用户输入矩形的长和宽,计算其面积并输出,结果四舍五入,保留2位小数。
输入格式:
第一行输入一个数字,代表矩形的长
第二行输入一个数字,代表矩形的宽
x=eval(input()) y=eval(input()) print("{:.2f}".format(x*y))