- 370038003300381586931224211
水仙花数
描述
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n位数(n≥3 且 n<6),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153,此处'^'表示幂运算)。
编程寻找并输出n位的水仙花数,n由用户输入,每行输出一个数字。
输入格式
输入一个介于3到5之间的正整数(包括3和5)
输出格式
输出n位的水仙花数,每行一个数
输入输出示例
输入 输出 示例 1 4 1634
8208
9474n=eval(input()) if n==3: for i in range(100,999): b=str(i) if i==int(b[0])**3+int(b[1])**3+int(b[2])**3: print(i) if n==4: for i in range(1000,9999): b=str(i) if i==int(b[0])**4+int(b[1])**4+int(b[2])**4+int(b[3])**4: print(i) elif n==5: for i in range(10000,99999): b=str(i) if i==int(b[0])**5+int(b[1])**5+int(b[2])**5+int(b[3])**5+int(b[4])**5: print(i)
-
数列求和
描述
给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,sum=1+11+111=123。
输入格式
两行,第一行输入一个整数A,且该数介于1至9之间(包含1和9)
第二行输入一个非负整数N,不超过100000
输出格式
输出其N项数列之和sum的值。
输入输出示例
输入 输出 示例 1 1
3
123 def fact(b): if b==1: return a else: return a*10**(b-1)+fact(b-1) a=int(input()) n=int(input()) s=0 for i in range(1,n+1): s=s+fact(i) print(s)
- 33003000370038003300381586931257842
温度转换异常处理
描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母 C 或小写字母 c 结尾,温度可以是整数或小数,如:12.34C 指摄氏度 12.34 度;
(2) 输入输出的华氏度采用大写字母 F 或小字字母 f 结尾,温度可以是整数或小数,如:87.65F 指华氏度 87.65 度;
(3) 考虑异常输入的问题,如输入不合法则抛出异常;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
输入格式
输入一个类似87.65F 的以字母结尾的数字
输出格式
输入正常,输出转换后的温度,保留小数点后2位小数。
当用户输入值末位不是“C、c、F、f”中的一个时,输出"输入错误,末位只能是'C','c','F','f'"
当检测到NameError错误时输出'试图访问的变量名不存在'
当检测到SyntaxError 错误时输出'存在语法错误'
输入输出示例
输入 输出 示例 1 102F
102D
AC
102ff
38.89C
输入错误,末位只能是'C','c','F','f'
试图访问的变量名不存在
存在语法错误
try: t=input() if t[-1] in ['F','f']: C=(eval(t[:-1])-23)/1.8 print("{:.2f}C".format(C)) elif t[-1] in ['C','c']: F=eval(t[:-1])*1.8+32 print("{:.2f}F".format(F)) else: print("输入错误,末位只能是'C','c','F','f'") except NameError: print("试图访问的变量名不存在") except SyntaxError: print("存在语法错误")
-
判断是否直角三角形
描述
输入三个数a,b,c, 判断能否以它们为三个边长构成直角三角形。若能,输出YES,否则输出NO。
输入格式
输入包括三行,每行是一个数字
输出格式
'YES' 或'NO'
输入输出示例
输入 输出 示例 1 3
4
5YES a=eval(input()) b=eval(input()) c=eval(input()) if a**2+b**2==c**2 or a**2+c**2==b**2 or b**2+c**2==a**2 : print("YES") else: print("NO")
-
求e的近似值
描述
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。
本题要求对给定的非负整数n,求该级数的前n项和。
输入格式:
输入第一行中给出非负整数n(≤100)。
输出格式:
在一行中输出部分和的值,保留小数点后八位。
输入样例:
10
输出样例:
2.71828180
n = int(input()) a = 1 sum = 1 for i in range(1,n+1): a *= i s = 1/a sum += s print("{:.8f}".format(sum))
- 00370038003300381586931310327
计算圆周率
根据下面的泰勒级数关系式,求圆周率的值,当最后一项的值小于给定阈值时结束。
输入格式:
输入在一行中给出小于1且大于0的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例1:
0.000001
输出样例1:
3.141591
n=eval(input()) a=1 for i in range(1,1000000): if (1/(2*i+1))>=n: a=((-1)**i)*(1/(2*i+1))+a else: break pi=a*4 print("{:.6f}".format(pi))
- 0370038003300381586931324825
个税计算器
描述
目前我国个人所得税计算公式如下:
应纳个人所得税税额= (工资薪金所得 -“五险一金”-扣除数)×适用税率-速算扣除数
个税免征额为5000元/月,2018年10月1日起调整后,也就是2012年实行的7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数
不超过3,000元 3 0
超过3,000元至12,000元的部分 10 210
超过12,000元至25,000元的部分 20 1,410
超过25,000元至35,000元的部分 25 2,660
超过35,000元至55,000元的部分 30 4,410
超过55,000元至80,000元的部分 35 7,160
超过80,000元的部分 45 15,160请编写一个个税计算器,用户输入为应发工资薪金所得扣除五险一金的金额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0时,输出“error”。
输入格式
12000
输出格式
应缴税款490.00元,实发工资11510.00元。
输入输出示例
输入 输出 示例 1 12000
20000
-10
应缴税款490.00元,实发工资11510.00元。
应缴税款1590.00元,实发工资18410.00元。
error
n=eval(input()) a=0 if n<0: print("error") else: if n-5000<=3000: a=0 if n>5000 and n-5000<=3000: a=(n-5000)*3/100 if n-5000>3000 and n-5000<=12000: a=(n-5000)*10/100-210 if n-5000>12000 and n-5000<=25000: a=(n-5000)*20/100-1410 if n-5000>25000 and n-5000<=35000: a=(n-5000)*25/100-2660 if n-5000>35000 and n-5000<=55000: a=(n-5000)*30/100-4410 if n-5000>55000 and n-5000<=80000: a=(n-5000)*35/100-7160 elif n-5000>80000 : a=(n-5000)*45/100-15160 print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(a,n-a))
- 33003000370038003300381586931346641
身份证号校验
描述
中国目前采用的是18位身份证号,其第7-10位数字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性别,奇数为男性,偶数为女性,第18位是校验位。
如果身份证号码的其中一位填错了(包括最后一个校验位),则校验算法可以检测出来。如果身份证号的相邻2位填反了,则校验算法可以检测出来。校验规则如下:
1. 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2. 将这17位数字和系数相乘的结果相加。
3. 用加出来和除以11,看余数只可能是:0-1-2-3-4-5-6-7-8-9-10
分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
4. 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X(大写英文字母X)。如果余数是10,身份证的最后一位号码就是2。
用户输入一个身份证号,校验其是否是合法的身份证号码。
输入格式
一个18位身份证号,末位为数字或大写字母X
输出格式
'身份证号码校验为合法号码!' 或 '身份证校验位错误!'
输入输出示例
输入 输出 示例 1 220221197302286534
220221197302296536
身份证校验位错误!
身份证号码校验为合法号码!
ls=input() li=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) a=0 if len(ls)==18: for i in range(17): a=a+int(ls[i])*int(li[i]) if str(ls[-1])=='X' : if a%11==2: print("身份证号码校验为合法号码!") else: print("身份证校验位错误!") elif (a % 11 + int(ls[17])) % 11 == 1: print("身份证号码校验为合法号码!") else: print("身份证校验位错误!") else: print("身份证校验位错误!")
-
校验身份证号码并输出个人信息
描述
中国目前采用的是18位身份证号,其第7-10位数字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性别,奇数为男性,偶数为女性,第18位是校验位。
如果身份证号码的其中一位填错了(包括最后一个校验位),则校验算法可以检测出来。如果身份证号的相邻2位填反了,则校验算法可以检测出来。校验规则如下:
1. 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2. 将这17位数字和系数相乘的结果相加。
3. 用加出来和除以11,看余数只可能是:0-1-2-3-4-5-6-7-8-9-10
分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
4. 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X(大写英文字母X)。如果余数是10,身份证的最后一位号码就是2。
用户输入一个身份证号,校验其是否是合法的身份证号码,如身份证号码不合法输出 '身份证校验位错误!',如身份证号码合法则分别在4行中输出'身份证号码校验为合法号码!'该人的出生年月日、年龄和性别。
特别说明:改题涉及到具体时间, 需要每年修改一次测试用例, 最后一次修改是2020年。 如果到了2021 年,请提示教师修改。
输入格式
一个18位身份证号,末位为数字或大写字母X
输出格式
参考下面示例
输入输出示例
输入 输出 示例 1 432831196411150810
432831196811150810
身份证号码校验为合法号码!
出生:1964年11月15日
年龄:54
性别:男身份证校验位错误!
s=eval(input()) ls=str(s) li=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) a=0 if len(ls)==18: for i in range(17): a=a+int(ls[i])*int(li[i]) if a%11==2 : if ls[-1]!='X': print("身份证校验位错误!") elif (a % 11 + int(ls[17])) % 11 != 1: print("身份证校验位错误!") else: print("身份证号码校验为合法号码!") print("出生:{}年{}月{}日".format(ls[6:10],ls[10:12],ls[12:14])) print("年龄:{}".format(2020-eval(ls[6:10]))) if eval(ls[16])%2==0: print("性别:女") else: print("性别:男") else: print("身份证校验位错误!")
- 033003000370038003300381586931418860
模拟生成微软序列号
描述
微软产品一般都一个25位的序列号,是用来区分每份微软产品的产品序列号。产品序列号由五组被“-”分隔开,由字母数字混合编制的字符串组成,每组字符串是由五个字符串组成。如:
36XJE-86JVF-MTY62-7Q97Q-6BWJ2
每个字符是取自于以下24个字母及数字之中的一个:
B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9
采用这24个字符的原因是为了避免混淆相似的字母和数字,如I 和1,O 和0等,减少产生不必要的麻烦。
随机数种子函数语法为:random.seed(n)输入格式
在2行中分别输入一个正整数:
第1个整数,代表要生成的序列号的个数
第2个正整数代表随机数种子
输出格式
指定个数的序列号
输入输出示例
输入 输出 示例 1 2
10
P6KFE-RG2CW-V7M7T-3E79C-RH8YY
QX9TJ-8QWG3-PJ8J7-YWTBH-BXFJPimport random num =eval(input()) n = input() random.seed(n) for i in range(num): ls=[] for j in range(5): a='' s='BCEFGHJKMPQRTVWXY2346789' for m in range(5): a=a+random.choice(s) ls.append(a) ls='-'.join(ls) print(ls)