Python语言上机题实现方法(持续更新...) (4)

24.【查验身份证】一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10

M:1 0 X 9 8 7 6 5 4 3 2

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。输入格式:输入第一行给出正整数*N*(≤100)是输入的身份证号码的个数。随后*N*行,每行给出1个18位身份证号码。输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。

输入样例1: 输入样例2: 4 2 320124198808240056 320124198808240056 12010X198901011234 110108196711301862 110108196711301866 输出样例2: 37070419881216001X All passed 输出样例1: 12010X198901011234 110108196711301866 37070419881216001X

【代码】:

str_1 = [] quan = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] dic = {0:1,1:0,2:'X',3:9,4:8,5:7,6:6,7:5,8:4,9:3,10:2} z=0 t=1 n = int(input()) for i in range(n): str_ = str(input()) str_1.append(str_) for i in str_1: for j in i[0:17]: if j < '0' or j > '9': print(i) t=0 str_1.remove(i) break for b in str_1: for k in range(17): z+=int(b[k])*quan[k] z=z%11 if b[17] != str(dic[z]): print(b) t=0 z=0 else: z=0 if t == 1: print("All passed")

25.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n天(<1<n<11)早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

【输入格式】:

共一行,为一个大于1小于11的正整数。

【输出格式】:

共一行,为一个正整数

【输入样例】:

2

【输出样例】:

4

代码】:

a = int(input()) sum = 1 for i in range(1,a): sum = (sum + 1) * 2 print(sum)

26.给定一个大于2的正整数n,打印出小于n(不包括n且n不大于100)的所有素数。要求将符合条件的输出填入一个列表中,打印的结果为该列表。(素数:只能被1和它本身整除的数)

【输入格式】:

共一行,为一个大于2的正整数。

【输出格式】:

共一行,为一个列表

【输入样例】:

10

【输出样例】:

[2,3,5,7]

【代码】:

import math a = int(input()) Alist = [] for i in range(2,a): for j in range(2,i): if i % j == 0: break else: Alist.append(i) print(Alist)

27.打印完数:输入一个正整数n(n<1000),输出1到n之间的所有完数(包括n)。(完数:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 6 = 1+2+3。)

【输入格式】:

共一行,为一个正整数

【输出格式】:

若干行,从小到大输出完数,一行为一个数

【输入样例】:

30

【输出样例】:

6 28

【代码】:

a = int(input()) for i in range(2,a): s = 1 for j in range(2,i): if i % j == 0: m = i / j s = s + m if s == i: print(i)

28.如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数。现在我们给定一个正整数n(n<1000),求所有小于等于n的与7无关的正整数的平方和。

【输入格式】:

共一行,为一个正整数

【输出格式】:

共一行,为一个正整数

【输入样例】:

50

【输出样例】:

31469

【代码】:

def num(a): if a % 7 == 0: return True elif '7' in set(str(a)): return True else: return False a = int(input()) sum = 0 for i in range(1,a + 1): if not num(i): sum += i ** 2 print(sum)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwxds.html