1.恺撒密码 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和特殊字符,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
1 original = input()
2 password = ''
3 for item in original:
4 if item.isalpha():
5 if item in ['x', 'y', 'z', 'X', 'Y', 'Z']:
6 password = password + chr(ord(item) - 23)
7 else:
8 password = password + chr(ord(item) + 3)
9 else:
10 password = password + item
11 print(password)
2.括号配对检测
用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:
配对成功,配对不成功
其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。
1 Str = input("")
2 Left_bracket = 0
3 for i in Str:
4 if i== '(':
5 Left_bracket+=1
6 elif i== ')':
7 if Left_bracket>0:
8 Left_bracket-=1
9 else:
10 print("配对不成功")
11 break
12 else:
13 if Left_bracket!=0:
14 print("配对不成功")
15 else:
16 print("配对成功")
3.天天向上的力量 B
一年365天,以第1天的能力值为基数,记为1.0。当好好学习时,能力值相比前一天提高N‰;当没有学习时,由于遗忘等原因能力值相比前一天下降N‰。每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是1到10,N可以是小数。
获得用户输入N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用“逗号+空格”格式。
1 N = eval(input(""))
2 DayUp = pow((1.0+0.001*N),364)
3 DayDown = pow((1.0-0.001*N),364)
4 Ratio = int(DayUp//DayDown)
5 print("{:.2f}, {:.2f}, {}".format(DayUp,DayDown,Ratio))
4.同符号数学运算
读入一个整数N,分别计算如下内容:
1. N的绝对值;
2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。
将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。
1 n = eval(input())
2 N = abs(n)
3 if n < 0:
4 a = -abs(N + 10)
5 b = -abs(N - 10)
6 c = -abs(N * 10)
7 else:
8 a = abs(N + 10)
9 b = abs(N - 10)
10 c = abs(N * 10)
11 print(N, a , b, c)
5.快乐的数字
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是一个快乐的数字,计算过程如下:
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
当输入时快乐的数字时,输出True,否则输出False。
1 a = input()
2 while (a != 1 and a != 4):
3 num = list(str(a))
4 a = 0
5 for i in num:
6 a = a + int(i)**2
7 if(a == 1):
8 print('True')
9 else:
10 print('False')
6.字符串反码 A
字符串反码的定义为:字符串所包含字符的反码组成的字符串。
字符反码的定义为:
(1) 对于小写英文字符,它的反码也是一个小写英文字符,且该字符与'a'的距离等于其反码与'z'的距离;
(2) 对于大写英文字符,它的反码也是一个大写英文字符,且该字符与'A'的距离等于其反码与'Z'的距离;
两个字符距离指其对应unicode编码之差。
1 str = input()
2 for i in str:
3 if i.islower()==True:
4 print("{}".format(chr(ord('z')+ord('a')-ord(i))),end="")
5 elif i.isupper()==True:
6 print("{}".format(chr(ord('Z')+ord('A')-ord(i))),end="")
7 else:
8 print(i,end="")
7.计算矩形面积
用户输入矩形的长和宽,计算其面积并输出,结果四舍五入,保留2位小数。
1 a = input()
2 b = input()
3 print("{:.2f}".format(eval(a)*eval(b)))
8.格式化输出
用户输入一个小数,用format格式化输出,保留3位小数。
1 print("{:.3f}".format(eval(input ())))
9.字符串逆序输出
用户输入一个字符串,倒序输出。
1 input_str = input()
2 print(input_str[::-1])
10.照猫画虎求阶乘
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。
任何大于等于1 的自然数n 阶乘表示方法:
参考示例代码,编程求任意大于0的整数的阶乘。
1 n = int(input())
2 sum = 1
3 for i in range(1,n+1):
4 sum *= i
5 print(sum)