一、恺撒密码 I
???????????????????????????????????????????????????????????????????????????????????????描述
凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:????????????????????????????????????????????????????????????????????????????????????????????????
原文: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~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
plaincode=input() for p in plaincode: if ord("a")<=ord(p)<=ord("z"): print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end=‘‘) else: print(p,end=‘‘)
二、恺撒密码 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和特殊字符,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
plaincode=input() for p in plaincode: if ord("a")<=ord(p)<=ord("z"): print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end=‘‘) elif ord("A")<=ord(p)<=ord("Z"): print(chr(ord("A")+(ord(p)-ord("A")+3)%26),end=‘‘) else: print(p,end=‘‘)
三、括号配对检测 A
????????????????????????????????????????????????????????????????????????????????????????????????描述
用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:????????????????????????????????????????????????????????????????????????????????????????????????
配对成功,配对不成功????????????????????????????????????????????????????????????????????????????????????????????????
其中,小括号配对要考虑配对顺序,即()表示配对,)(不是配对,只考虑小括号配对。????????????????????????????????????????????????????????????????????????????????????????????????
注意,这是一个OJ题目,获得输入使用input("")。
Str=input("") Left_bracket=0 Left_bracket_Z=0 Right_bracket_Z=0 for i in Str: if i== ‘(‘: Left_bracket+=1 elif i== ‘)‘: if Left_bracket>0: Left_bracket-=1 else: print("配对不成功") break else: if Left_bracket!=0: print("配对不成功") elif Left_bracket_Z!=Right_bracket_Z: print("配对不成功") else: print("配对成功")
四、星号三角形 I
????????????????????????????????????????????????????????????????????????????????????????????????描述
读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:????????????????????????????????????????????????????????????????????????????????????????????????
第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
n = eval(input()) p = int((n + 1) / 2) for i in range(1, p + 1, 1): for j in range(p - i): print(" ", end = "") for k in range(2 * i - 1): print("*",end = "") for q in range(p - i): print(" ", end = "") print()
五、整数阶乘组合计算
描述????????????????????????????????????????????????????????????????????????????????????????????????
给定正整数n、a,求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。????????????????????????????????????????????????????????????????????????????????????????????????
n和a采用一次input()调用输入,两个数使用逗号(,)分隔,直接输出k值。
n,a=eval(input()) nn=1 for i in range(1,n+1): nn=i*nn for k in range(1,n) if nn % a**k == 0 and nn % a**(k+1)!= 0: print(k)
六、整数逆位运算
描述
对整数除符号为外的数字进行逆位操作。????????????????????????????????????????????????????????????????????????????????????????????????
例如 x = 123,返回321;x = -123,返回-321。
import math number=input() if int(number)==0: number_result=0 elif number.isdigit() and int(number)>=0: number_new=number[::-1] number_result=int(number_new.lstrip("0")) else: number_result =-int((number[1:][::-1]).lstrip("0")) print(number_result)
七、圆面积的计算 A
????????????????????????????????????????????????????????????????????????????????????????????????描述
根据圆半径计算圆面积,结果保留两位小数。其中,圆周率使用 3.1415。????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????此题目是AutoOJ(自动评阅)类型,请注意:????????????????????????????????????????????????????????????????????????????????????????????????
1. 获得输入请使用input(""),不要增加提示信息????????????????????????????????????????????????????????????????????????????????????????????????
2. 输出与要求一致
radius=eval(input()) area=3.1415*radius*radius print("{:.2f}".format(area))
八、货币转换 B
????????????????????????????????????????????????????????????????????????????????????????????????描述
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:????????????????????????????????????????????????????????????????????????????????????????????????
人民币和美元间汇率固定为:1美元 = 6.78人民币。????????????????????????????????????????????????????????????????????????????????????????????????
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用¥符号或RMB表示,美元采用$或USD表示,符号和数值之间没有空格。????????????????????????????????????????????????????????????????????????????????????????????????
注意:????????????????????????????????????????????????????????????????????????????????????????????????
(1) 人民币和美元间符号在转换中要对等,¥和$相互对应,RMB和USD相互对应。????????????????????????????????????????????????????????????????????????????????????????????????
(2) 这是一个OJ题目,获得输入请使用input("")
str=input("") if str[0:3] in ["USD","usd"]: R = eval(str[3:])* 6.78 print("RMB{:.2f}".format(R)) elif str[0:1] in ["$"]: R = eval(str[1:])* 6.78 print("¥{:.2f}".format(R)) elif str[0:3] in ["RMB"]: M = eval(str[3:]) / 6.78 print("USD{:.2f}".format(M)) elif str[0:1] in ["¥"]: M = eval(str[1:]) / 6.78 print("${:.2f}".format(M)) else: print("输入格式错误")
九、3位水仙花数计算
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????描述
“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。????????????????????????????????????????????????????????????????????????????????????????????????
请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。????????????????????????????????????????????????????????????????????????????????????????????????
注意:这是一个OJ题目,输出格式要严格一致,最后一位水仙花数后没有逗号。
def Narcissus(): list1=[] for num in range(100,1000): a=num//100 b=num//10%10 c=num%10 if num==a**3+b**3+c**3: list1.append(num) return list1 str1=‘, ‘.join(map(str,Narcissus())) print(str1)
十、温度转换 II
???????????????????????????????????????????????????????????????????????????????????????????????描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。????????????????????????????????????????????????????????????????????????????????????????????????
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。????????????????????????????????????????????????????????????????????????????????????????????????
转换算法如下:(C表示摄氏度、F表示华氏度)????????????????????????????????????????????????????????????????????????????????????????????????
C = ( F - 32 ) / 1.8????????????????????????????????????????????????????????????????????????????????????????????????
F = C * 1.8 + 32????????????????????????????????????????????????????????????????????????????????????????????????
要求如下:????????????????????????????????????????????????????????????????????????????????????????????????
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;????????????????????????????????????????????????????????????????????????????????????????????????
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指摄氏度87.65度;????????????????????????????????????????????????????????????????????????????????????????????????
(3) 不考虑异常输入的问题,输出保留小数点后两位;????????????????????????????????????????????????????????????????????????????????????????????????
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
TempStr = input() if TempStr[0] in[‘f‘,‘F‘]: C = (eval(TempStr[1:])-32)/1.8 print("C{:.2f}".format(C)) elif TempStr[0] in[‘C‘,‘c‘]: F = 1.8*eval(TempStr[1:])+32 print("F{:.2f}".format(F))
十一、货币转换 C
???????????????????????????????????????????????????????????????????????????????????????????????描述
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:????????????????????????????????????????????????????????????????????????????????????????????????
人民币和美元间汇率固定为:1美元 = 6.78人民币。????????????????????????????????????????????????????????????????????????????????????????????????
程序可以接收人民币或美元输入,转换为美元或人民币输出。人民币采用¥符号或RMB表示,美元采用$或USD表示,符号和数值之间没有空格。????????????????????????????????????????????????????????????????????????????????????????????????
注意:????????????????????????????????????????????????????????????????????????????????????????????????
(1) 人民币和美元间符号在转换中要对等,¥和$相互对应,RMB和USD相互对应,输出结果保留小数点后两位;????????????????????????????????????????????????????????????????????????????????????????????????
(2) 符号在数字的后面;????????????????????????????????????????????????????????????????????????????????????????????????
(3) 这是一个OJ题目,获得输入请使用input() 。
str=input("") if str[-3::] in ["USD","usd"]: R = eval(str[:-3:])* 6.78 print("{:.2f}RMB".format(R)) elif str[-1] in ["$"]: R = eval(str[:-1])* 6.78 print("{:.2f}¥".format(R)) elif str[-3::] in ["RMB"]: M = eval(str[:-3:]) / 6.78 print("{:.2f}USD".format(M)) elif str[-1] in ["¥"]: M = eval(str[:-1]) / 6.78 print("{:.2f}$".format(M)) else: print("输入格式错误")
十二、天天向上的力量 III
描述
一年365天,以第1天的能力值为基数,记为1.0。????????????????????????????????????????????????????????????????????????????????????????????????
当好好学习时,能力值相比前一天提高N‰;当没有学习时,能力值相比前一天下降N‰。????????????????????????????????????????????????????????????????????????????????????????????????
每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是0到100,N可以是小数,假设输入符合要求。????????????????????????????????????????????????????????????????????????????????????????????????
获得用户输入的N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用英文逗号分隔。????????????????????????????????????????????????????????????????????????????????????????????????
使用input()获得N。????????????????????????????????????????????????????????????????????????????????????????????????
N=eval(input()) daydayup=pow((1.0+N/1000),365) daydaydn=pow((1.0-N/1000),365) print("{:.2f}".format(daydayup)+","+"{:.2f}".format(daydaydn)+","+str(int(daydayup//daydaydn)))
十三、快乐的数字
描述
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。????????????????????????????????????????????????????????????????????????????????????????????????
例如: 19 就是一个快乐的数字,计算过程如下:????????????????????????????????????????????????????????????????????????????????????????????????
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
当输入时快乐的数字时,输出True,否则输出False。
def xj(n): list = [int(i)for i in str(n)] s = 0 for i in range(0,len(list)): s = s + list[i] return s n = input() while xj(n)>=10: n = xj(n) else: if xj(n)==1: print(‘True‘) else: print(‘False‘)