四道python例题及代码举例(某校python综合练习⼀)
新⼿码农,请多指教。
1【问题描述】我国⾝份证号码由数字与字母混合组成。早期⾝份证由15位数字构成,后来考虑到千年⾍问题(15位的⾝份证号码只能为
1900年1⽉1⽇到1999年12⽉31⽇出⽣的⼈编号),所以⼜增加了18位⾝份证号码编号规则。最后⼀位(第18位)校验码的计算⽅法
如下:
第⼀步:将⾝份证前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、
10、5、8、4、2,将17位数字和系数相乘的结果相加。
第⼆步:将上⼀步结果除以11求余数,则余数只可能是0-10,⾝份证最后⼀位的对应字符为1、0、X、9、8、7、6、5、4、3、2。
例如余数结果为3,则对应⾝份证号码的最后⼀位就是9,如果是10,⾝份证最后⼀位便是2。
请根据上述算法判断输⼊的⾝份证号是否合法。
【输⼊形式】⼀⾏18位的字符串,代表⼀个⾝份证号
【输出形式】如果输⼊的是合法⾝份证号,请输出“YES”,否则输出“NO”
【样例输⼊】110000000000000000
【样例输出】NO
【样例说明】不合法⾝份证号,输出“NO”
【评分标准】共5个测试⽤例,全部通过为满分
a = input()
alist = []
for i in range(0,17):
alist.append(a[i])
alist = [int(x) for x in alist]
s = 7*alist[0]+9*alist[1]+10*alist[2]+5*alist[3]+8*alist[4]+4*alist[5]+2*alist[6]+1*alist[7]+6*alist[8]+3*alist[9]+7*alist[10]+9*alist[11]+10*alist[12]+5*alist[13]+8*alist[14]+4 blist=[0,1,2,3,4,5,6,7,8,9,10]
blist = [int(y)for y in blist]
if s%11 == 0 and int(a[17])==1:
print("YES")
elif s%11 == 1 and a[17]=="0":
print("YES")
elif s%11 == 3 and a[17]=="9":
print("YES")
elif s%11 == 4 and a[17]=="8":
print("YES")
elif s%11 == 5 and a[17]=="7":
print("YES")
elif s%11 == 6 and a[17]=="6":
print("YES")
elif s%11 == 7 and a[17]=="5":
print("YES")
iis php一键安装包elif s%11 == 8 and a[17]=="4":
print("YES")
elif s%11 == 9 and a[17]=="3":
print("YES")
elif s%11 == 10 and a[17]=="2":无油导轨滑块
print("YES")
elif s%11 == 2 and a[17]=="X":
print("YES")
else:
print("NO")
(上述⽅法只使⽤了列表,其他⽅法后续更新)
2【问题描述】⼩钱马上要出国了,他发现各个国家的⼈名字的格式都不尽相同。有的⼈只有⼀个名字,有的⼈既有名(First Name)⼜有
姓(Last name),还有的⼈甚⾄还有中间名(Middle Name),⽽且中间名可能还不⽌⼀个。现在他想把所有看到的名字都转换成标准的格
式。⾸先名字中的每个单词⾸字母都需要⼤写,其他⼩写;如果这个⼈的名字只有⼀个或者两个单词,
那么他的名字就是标准格式。如果他
有中间名,那么把中间名都换成⾸字母加“.”的形式。提⽰:python中的字符串类型提供capitalize()⽅法(注意是⽅法不是函数),可以
返回⾸字母⼤写,其他字母⼩写的字符串。
【输⼊形式】⼀⾏字符串,代表名字。单词之间⽤空格间隔开。
scalance xc216【输出形式】⼀⾏字符串,代表名字的标准格式。
【样例输⼊】Alice betty catherine Davis
【样例输出】Alice B. C. Davis
【样例说明】每个单词⾸字母⼤写,中间名字采⽤缩写
【评分标准】全部通过为满分
a = input()
alist = a.split()
alist = [x.capitalize() for x in alist]
c=0
for i in alist:
c+=1
if c == 1:
print(a.capitalize())
cocos creator入门elif c == 2:
print(alist[0],alist[1])
else:
m = alist[0]
n = alist[c-1]
alist = [j[0] for j in alist]
y = ". ".join(alist)
print(m,y+".",n)
3【问题描述】
2500年前数学⼤师毕达哥拉斯就发现,220和284两数之间存在着奇妙的联系:
220的因数之和(除了⾃⾝之外的因数)为:1+2+4+5+10+11+20+22+44+55+110=284,284的因数之和为:
1+2+4+71+142=220。
毕达哥拉斯把这样的数对称为相亲数。输⼊两个正整数(⼤于1并且在int的表⽰范围之内),分别计算它们所有因数之和(除了⾃⾝之外的因数),并判断它们是否是⼀对相亲数。
【输⼊形式】
从标准输⼊输⼊两个正整数,以⼀个空格分隔这两个正整数。
【输出形式】
以输⼊的先后顺序分⾏输出:输⼊的正整数,后跟英⽂逗号",",再从1开始输出其因数相加的公式(最⼤的因数之后没有加号),最后输出英⽂等号"="和因数之和。注意:所有输出元素间⽆空格。
若它们是⼀对相亲数,则在新的⼀⾏上输出1;若不是则在新的⼀⾏上输出0。
【样例输⼊1】
220 284
【样例输出1】
220,1+2+4+5+10+11+20+22+44+55+110=284
284,1+2+4+71+142=220
1
【样例输⼊2】
openssl查看证书设备序列号2560 3282
2560,1+2+4+5+8+10+16+20+32+40+64+80+128+160+256+320+512+640+1280=3578
3282,1+2+3+6+547+1094+1641=3294
【样例说明】
样例1中输⼊的两个正整数为220和284,220的因数之和为284,284的因数之和为220,所以它们是⼀对相亲数,最后输出1;
例2中输⼊的两个正整数是2560和3282,2560的因数之和为3578,3282的因数之和为3294,所以它们不是⼀对相亲数,最后输出0。
#得到因数
def ys(k):
ls =[]
i = 1
while k != i:
if k % i == 0:
ls.append(i)
i+=1
return ls
a =input()
alist = a.split()
m = int(alist[0])
n = int(alist[1])
l1 = ys(m)
l2 = ys(n)
x = str(sum(l1))
y = str(sum(l2))
l1 = [str(i) for i in l1]
l2 = [str(j) for j in l2]
str1 = "+".join(l1)
str2 = "+".join(l2)
m = str(m)
n = str(n)
if int(m) == int(y):
print(m+","+str1+"="+x)
print(n+","+str2+"="+y)
print(1)
else:
print(m+","+str1+"="+x)
print(n+","+str2+"="+y)
print(0)
4【问题描述】
⼀个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例如正整数145,1!+4!+5!等于145,因此145就是⼀个阶乘和数。输⼊⼀个正整数,计算它的各位数字的阶乘之和,并判断它是否是⼀个阶乘和数。
【输⼊形式】
从控制台输⼊⼀个正整数。
【输出形式】
先输出输⼊的正整数和⼀个逗号",",并从个位开始输出组成该正整数的各位数字的阶乘相加形式,然后输出等号"="和各位数字阶乘之和,最后在下⼀⾏输出字符串"Yes"表⽰该正整数是阶乘和数,否则输出字符串"No"表⽰该正整数不是阶乘和数。
【输⼊样例1】
145
145,5!+4!+1!=145
Yes
【输⼊样例2】
1400
【输出样例2】
1400,0!+0!+4!+1!=27
No
【输⼊样例3】
4
【输出样例3】
4,4!=24
No
【样例说明】
样例1中输⼊的正整数为145,组成它的各位数字的阶乘之和为145,所以145为阶乘和数。样例2中输⼊的正整数为1400,组成它的各位数字的阶乘之和为27,所以1400不是阶乘和数。样例3中输⼊的正整数为4,组成它的只有⼀位数字,其阶乘为24,也不是阶乘和数。注意:输出时各个数位的顺序是从低位到⾼位。
#递归函数求阶乘
def fact(n):
if n == 0 or n == 1:
return 1
else:
return n * fact(n-1)
a = int(input())
a = str(a)
ls = []
for i in range(0,len(a)):
ls.append(a[i])
str1 = "!+".join(ls)
ls = [int(y) for y in ls]
ls = [fact(x) for x in ls]
s = sum(ls)
if s == int(a):
print(a+","+str1+"!="+str(s))
print("Yes")
else:
print(a+","+str1+"!="+str(s))
print("No")
>python基础代码练习

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。