python练习6——PTA
Posted ~晚风微凉~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
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-8 旋转方阵 (10 分)
对于一个奇数n阶方阵,请给出经过顺时针方向m次旋转后的结果。
输入格式:
测试数据有多组,处理到文件尾。每组测试的第一行输入2个整数n,m(1<n<20,1≤m≤100),接下来输入n行数据,每行n个整数。
输出格式:
对于每组测试,输出奇数阶方阵经过m次顺时针方向旋转后的结果。每行中各数据之间留一个空格。
输入样例:
3 2
4 9 2
3 5 7
8 1 6
3 1
4 9 2
3 5 7
8 1 6
3 7
4 9 2
3 5 7
8 1 6
3 8
4 9 2
3 5 7
8 1 6
输出样例:
6 1 8
7 5 3
2 9 4
8 3 4
1 5 9
6 7 2
2 7 6
9 5 1
4 3 8
4 9 2
3 5 7
8 1 6
这个明明测试样例都可以过,就是答案错误,给我整不明白了,暂时附上只能过测试样例的代码
while True:
try:
keyindex=[]
tmp=[]
tmp.append(0)
n,m=map(int,input().split())
m=m%4
for i in range(n):
tmp=tmp+input().split()#哟西,所有的值都存储进去了
# print(tmp)
if m==0:
for i in range(1,n*n+1):
if i%n!=0:
print(tmp[i],end=" ")
elif i%n==0:
print(tmp[i])
elif m==1:
for i in range(1,n+1):
for j in range(1,n+1):
tt = (3 - j) * n + i
if j!=n:
print(tmp[tt],end=" ")
elif j==n:
print(tmp[tt])
elif m==2:
for i in range(1, n + 1):
for j in range(1, n + 1):
tt = (3-i)*n+(3-j+1)
if j != n:
print(tmp[tt], end=" ")
elif j == n:
print(tmp[tt])
elif m==3:
for i in range(1, n + 1):
for j in range(1, n + 1):
tt = (3-i+1)+(j-1)*n
if j != n:
print(tmp[tt], end=" ")
elif j == n:
print(tmp[tt])
except:
break
# 7-9 整数转换为字符串 (10 分)
将一个整数n转换成字符串。例如;输入483,应得到字符串"483"。其中,要求用一个递归函数实现把一个正整数转换为字符串。
输入格式:
首先输入测试组数T,然后输入T组测试数据。每组测试数据输入一个整数n(-2^31≤n≤2^31-1)。
输出格式:
对于每组测试,输出转换后的字符串。
输入样例:
1
1234
输出样例:
1234
n=int(input())#想一下之后按题目要求的来
for i in range(n):
str=input()
print(str)
# 7-10 进制转换 (10 分)
将十进制整数n(−231≤n≤231−1)转换成k(2≤k≤16)进制数。注意,10~15分别用字母A、B、C、D、E、F表示。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入两个整数n和k。
输出格式:
对于每组测试,先输出n,然后输出一个空格,最后输出对应的k进制数。
输入样例:
4
5 3
123 16
0 5
-12 2
输出样例:
5 12
123 7B
0 0
-12 -1100
#队列
t=int(input())
flag=1
for i in range(t):
flag=1
n,m=map(int,input().split())
if n == 0:
print("0 0")
continue
ans1=n
ans=""
while True:
try:
if n==0:
break
elif n<0:
n=abs(n)
flag=-1
else:
tmp=n%m
if tmp>=10 and tmp<=15:
tmp=65+(tmp-10)
# print(chr(tmp))
ans+=chr(tmp)
else:
ans+=str(tmp)
# print(str(tmp))
n=n//m
except:
break
# ans.reverse()
print("%d"%ans1,end=" ")
if flag == -1:
print("-",end="")
for i in range(len(ans)-1,-1,-1):
print(ans[i],end="")
print()
以上是关于python练习6——PTA的主要内容,如果未能解决你的问题,请参考以下文章