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的主要内容,如果未能解决你的问题,请参考以下文章

PTA的Python练习题

PTA的Python练习题(二十)

PTA的Python练习题

PTA的Python练习题

PTA的Python练习题(十九)

PTA的Python练习题(十五)