python练习6——PTA
7-1 重复元素查 (100 分)
每⼀个列表中只要有⼀个元素出现两次,那么该列表即被判定为包含重复元素。
编写程序:对n⾏字符串进⾏处理,⼀⾏字符串构成⼀个列表。程序判定每⼀个列表中是否包含重复元素。最后统计包含重复元素的⾏数与不包含重复元素的⾏数。
输⼊格式:
输⼊n,代表接下来要输⼊n⾏字符串。
然后输⼊n⾏字符串,字符串之间的元素以空格相分隔。
输出格式:
True=包含重复元素的⾏数
False=不包含重复元素的⾏数
输⼊样例:
5
1 a 3 c 5
a 3 c 5 d
b 2 3 b 1
x 2 w 2 w
a 1 1 1 1
结尾⽆空⾏
输出样例:
True= 3
False= 2
n=int(input())
true=n
#想⽤whilen--
for i in range(n):
tmp=map(str,input().split())#细想
tmp=list(tmp)#想⼀下,是把字典⾥哪些东西变成了列表
if len(tmp)==len(set(tmp)):
true-=1
print("True= %d\nFalse= %d" %(true,n-true))
# 7-2 jmu-python-组合数 (20 分)
本题要求编写程序,根据公式
算出从n个不同元素中取出m个元素(m≤n)的组合数。
输⼊格式:
输⼊在⼀⾏中给出两个正整数m和n,以空格分隔。
如果输⼊数据负数,能输出提⽰不能负数
如果输⼊数据出发⾮法数据,能输出提⽰请输⼊数值 (数值异常处理)
输出格式:
按照格式result = 组合数计算结果输出。
输⼊样例:
2 7
结尾⽆空⾏
输出样例:
result=21.00
结尾⽆空⾏
def jc(x):
ans=1
python 定义数组for i in range(1,x+1):
ans*=i
return ans
while True:
try:
flag=True
str=input()
m,n=map(int,str.split())
if m<0 or n<0:
print("不能负数")
flag=False
else:
pass
break
except:
print("请输⼊数值")
flag=False
break
if flag==False:
exit(0)
end=0.0
#print(jc(n))
end=jc(n)/(jc(m)*jc(n-m))
print("result=%.2lf" %end)
# 7-3 递归算法实现冒泡排序算法的函数MpSort (20 分)
定义⼀个函数MpSort实现对⼀组数据的从⼩⼤排序。编写程序,实现读⼊若⼲个整数存⼊合适的数据结构类型的对象中。再调⽤MpSort 函数,对该对象中的元素进⾏排序后输出。
输⼊格式:
⼀组⽤空格隔开的整数。
输出格式:
排序好⼀组⽤空格隔开的的整数。例如:尾部带空格。
输⼊样例:
在这⾥给出⼀组输⼊。例如:
1 3 5 7 4
2 6 8 10 9
结尾⽆空⾏
输出样例:
在这⾥给出相应的输出。例如:
1 2 3 4 5 6 7 8 9 10
结尾⽆空⾏
str=input()#之后试试按题⽬要求的
li=[]
li=map(int,str.split())
li=sorted(li)
for i in li:
print(i,end=" ")
# 7-4 ⼤型⽥字格 (10 分)
设计程序,输⼊n,输出n×n的⽥字格。
输⼊格式:
输⼊⼀个0~10之间的整数,n∈[0,10]
输出格式:
使⽤print函数输出“+”、“-”、“|”以及空格组成的⽥字格图形(每个⽅格由四个‘+’号,⽔平),如输⼊为0,什么也不输出。输⼊样例:
在这⾥给出⼀组输⼊。例如:
1
结尾⽆空⾏
输出样例:
在这⾥给出相应的输出。例如:
+ - - - - +
|        |
|        |
|        |
|        |
+ - - - - +
结尾⽆空⾏
输⼊样例:
在这⾥给出⼀组输⼊。例如:
4
结尾⽆空⾏
输出样例:
在这⾥给出相应的输出。例如:
+ - - - - + - - - - + - - - - + - - - - +
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
+ - - - - + - - - - + - - - - + - - - - +
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
+ - - - - + - - - - + - - - - + - - - - +
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
+ - - - - + - - - - + - - - - + - - - - +
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
|        |        |        |        |
+ - - - - + - - - - + - - - - + - - - - +
结尾⽆空⾏
h=[1,6,11,16,21,26,31,36,41,46,51]
n=int(input())
if n==0:
exit(0)
c=5*n+1
for i in range(1,c+1):
for j in range(1,c+1):
if i in h and j in h:
print("+",end="")
elif i not in h and j not in h:
print(" ",end="")
pass
elif i in h and j not in h:
print("-",end="")
else:
print("|",end="")
if j!=c:
print(" ",end="")
else:
pass
print()
7-5 Catalan数 (10 分)
把n的Catalan(卡特兰)数表⽰为h(n),则有h(1)=1,h(n)=C(2n,n)/(n+1)(n>1)。C(n,m)表⽰组合数;例如,当n=5、m=2时,组合数C(5,3)=(5×4×3)/(3×2×1)=10。
输⼊格式:
测试数据有多组,处理到⽂件尾。每组测试输⼊⼀个正整数n(1 ≤n ≤ 100)。
输出格式:
对于每组测试,在⼀⾏上输出n的Catalan数h(n)。
输⼊样例:
3
输出样例:
5
import sys
for line in sys.stdin:
n = int(line)
if n < 1 or n > 100:
break
m = 2 * n
u = d = 1
for x in range(n):
u *= m - x
d *= n - x
h = int(u / d / (n + 1))
print(h)
if line == '\n':
break
7-7 求矩阵中的逆鞍点 (10 分)
求出n×m⼆维整数数组中的所有逆鞍点。这⾥的逆鞍点是指在其所在的⾏上最⼤,在其所在的列上最⼩的元素。若存在逆鞍点,则输出所有逆鞍点的值及其对应的⾏、列下标。若不存在逆鞍点,则输出“Not”。要求⾄少使⽤⼀个⾃定义函数。
输⼊格式:
测试数据有多组,处理到⽂件尾。每组测试的第⼀⾏输⼊n和m(都不⼤于100),第⼆⾏开始的n⾏每⾏输⼊m个整数。
输出格式:
对于每组测试,若存在逆鞍点,则按⾏号从⼩到⼤、同⼀⾏内按列号从⼩到⼤的顺序逐⾏输出每个逆鞍点的值和对应的⾏、列下标,每两个数据之间⼀个空格;若不存在逆鞍点,则在⼀⾏上输出“Not”(引号不必输出)。
输⼊样例:
3 3
97 66 96
85 36 85
88 67 91
3 4
73 89 74 76
6 33 74 0
27 57 6 32
输出样例:

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