欢迎光临
我们一直在努力

sdut-python-实验四-python序列结构(11-20)

7-13 sdut-矩阵行、列、对角线和的最大值

分数 10

作者 周雪芹

单位 山东理工大学

求一个3*3矩阵每行、每列及对角线和的最大值。

输入格式:

在一行输入9个整数。

输出格式:

在一行输出每行、每列及对角线和的最大值。

输入样例:

3 6 5 9 8 2 1 4 5

输出样例:

19

实现代码:

n=[int(num) for num in input().split()]
sum=0
sum=max(sum,n[0]+n[1]+n[2])
sum=max(sum,n[3]+n[4]+n[5])
sum=max(sum,n[6]+n[7]+n[8])
sum=max(sum,n[0]+n[3]+n[6])
sum=max(sum,n[1]+n[4]+n[7])
sum=max(sum,n[2]+n[5]+n[8])
sum=max(sum,n[0]+n[4]+n[8])
sum=max(sum,n[2]+n[4]+n[6])
print(sum)

7-15 sdut-打印显示直角字母图形

分数 10

作者 周雪芹

单位 山东理工大学

给定行数,输出指定行数的字母组成的图形。

输入格式:

在一行内给出行数n,1<=n<=10。

输出格式:

输出由大小字母组成的直角图形。

输入样例1:

2

输出样例1:

A

AB

输入样例2:

7

输出样例2:

A

AB

ABC

ABCD

ABCDE

ABCDEF

ABCDEFG

 实现代码:

n=int(input())
a='A'
b=65
while n:
n-=1
print(a)
b+=1
a+=chr(b)

7-17 sdut-array2-5 打印“杨辉三角“ 品中国数学史 增民族自豪感(2)

分数 10

作者 周雪芹

单位 山东理工大学

背景介绍:

北宋人贾宪约1050年首先使用“贾宪三角”进行高次开方运算。
南宋数学家杨辉在《详解九章算法》(1261年)记载并保存了“贾宪三角”,故称杨辉三角。杨辉三角是中国数学史上的一个伟大成就。
杨辉三角,是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

杨辉三角数字的特点为:

(1)在三角形的首列和对角线上,数值均为1;

(2)其余数据为:每个数字等于上一行的左右两个数字之和,第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,用公式表示为: C(n+1,i)=C(n,i)+C(n,i-1)。

图示为:

1.jpg

杨辉三角的应用:(a+b)的n次方,展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

输入格式:

欲打印杨辉三角的行数n(1<=n<=13)。

输出格式:

(1)输出的数据为等腰三角形样式;

(2)每个数字占据4个字符的位置,数字左对齐,数字不足4位的右边留出空格;

(3)最后一行的数值“1”顶格,前面无空格。

提示:以n=5,分析行首空格数为:

7.jpg

输入样例1:

5

输出样例:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

输入样例2:

6

输出样例:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

 实现代码:

n=int(input())
l=[0]*n
for i in range(n):
l[i]=[0]*(n+1)
l[i][0]=1
l[i][i]=1
for j in range(1,i+1):
l[i][j]=l[i-1][j]+l[i-1][j-1]
for i in range(n):
for j in range(2*n-2-2*i):
print(" ",end="")
for j in range(i+1):
print("%-4d" %l[i][j],end="")
print()

7-18 sdut-列表去重

分数 10

作者 周雪芹

单位 山东理工大学

输入一个列表,去掉列表中重复的数字,按原来次序输出!

输入格式:

在一行中输入列表。

输出格式:

在一行中输出不重复的列表元素。

输入样例1:

[4,7,5,6,8,6,9,5]

输出样例1:

4 7 5 6 8 9

输入样例2:

[1,2,3,"abcd","hello",1,2,3,4,5,6]

输出样例2:

1 2 3 abcd hello 4 5 6

 实现代码:

l=eval(input())
s=sorted(set(l),key=l.index)
print(*s,sep=" ")

7-19 sdut-期末考试之排名次

分数 10

作者 周雪芹

单位 山东理工大学

期末考试结束了,童鞋们的成绩也出来的了,可是为了排名次可忙坏了老师,因为学生太多了。这时,老师把这个任务交给了你,希望你能帮老师完成。作为IT人,你当然不能用笨笨的人工方法了,编程解决才是好办法。
共有三门课,语文、数学和英语,要求根据学生的各科成绩计算出其总成绩,并根据总成绩从高到低排序.

输入格式:

第一行一个整数N(N<=100),代表学生的人数。
接下来的N行数据,每行有三个整数,C,M,E分别代表一个学生语文、数学和英语的成绩.

输出格式:

一共N行,每行一个数,从大到小,分别代表各个学生的总成绩.

输入样例:

3

70 80 90

59 59 59

100 100 100

输出样例:

300

240

177

 实现代码:

n=int(input())
l=[]
while n:
n-=1
x,y,z=map(int,input().split())
l.append(x+y+z)
l.sort(reverse=True)
print(*l,sep="\\n")

7-20 sdut- 矩阵转置(II)

分数 10

作者 周雪芹

单位 山东理工大学

从键盘输入一个m(2<=m<=6)*n(2<=n<=6)阶的矩阵,编程输出它的转置矩阵。

输入格式:

在第一行输入矩阵的行数m和列数n的值;

在第二行按照矩阵格式输入矩阵的数据,同行数据之间用空格隔开。

输出格式:

矩阵格式输出,同行数据之间用一个空格隔开。

输入样例:

3 5

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

输出样例:

1 1 1

2 2 2

3 3 3

4 4 4

5 5 5

 实现代码:

x,y=map(int,input().split())
l=[]
for i in range(x):
s=[int(num) for num in input().split()]
l.append(s)
for i in range(y):
for j in range(x):
if j!=x-1:
print(l[j][i],end=" ")
else:
print(l[j][i], end="\\n")

7-23 sdut-对称矩阵的判定

分数 10

作者 周雪芹

单位 山东理工大学

输入矩阵的行数,再依次输入矩阵的每行元素,判断该矩阵是否为对称矩阵,若矩阵对称输出“yes”,不对称输出“no”。

输入格式:

输入有多组,每一组第一行输入一个正整数N(N<=20),表示矩阵的行数(若N=0,表示输入结束)。

下面依次输入N行数据。

输出格式:

若矩阵对称输出“yes",不对称输出“no”。

输入样例:

3

6 3 12

3 18 8

12 8 7

3

6 9 12

3 5 8

12 6 3

0

输出样例:

yes

no

 实现代码:

while True:
n=int(input())
if n==0:
break
else:
l=[]
f=0
for i in range(n):
num1=[int(num) for num in input().split()]
l.append(num1)
for i in range(n):
for j in range(n):
if l[i][j]!=l[j][i]:
f=1
break
if f==0:
print("yes")
else:
print("no")

7-18 sdut-查验身份证

分数 10

作者 周雪芹

单位 山东理工大学

一个合法的身份证号码由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

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

验证身份证合法性的规则:(1)前17位是否全为数字;(2)最后1位校验码计算准确。

输入格式:

输入第一行给出正整数N(≤100)表示:输入的身份证号码的个数。

随后N行,每行给出1个18位身份证号码。

输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。

如果所有号码都正常,则输出All passed。

输入样例1:

4

320124198808240056

12010X198901011234

110108196711301866

37070419881216001X

输出样例1:

12010X198901011234

110108196711301866

37070419881216001X

输入样例2:

2

320124198808240056

110108196711301862

输出样例2:

All passed

 实现代码:

n=int(input())
l1=[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
l2=[1,0,'X',9,8,7,6,5,4,3,2]
t=n
cnt=0
while n:
n-=1
s=input()
sum=0
if s[:-1].isdigit():
for i in range(17):
sum=(sum+int(s[i])*int(l1[i]))%11
if s[17]==str(l2[sum]):
cnt+=1
else:
print(s)
else:
print(s)
if cnt==t:
print("All passed")

7-19 sdut-统计两个字符串中相同的字符个数

分数 10

作者 周雪芹

单位 山东理工大学

输入字符串A、字符串B,求在字符串A、字符串B中相同的字符个数。

输入格式:

第一行输入,表示字符串A。
第二行输入,表示字符串B。

输出格式:

在一行内,输出字符串A、B中相同字符的个数。

输入样例:

AEIOU

HELLO World!

输出样例:

在这里给出相应的输出。例如:

2

 实现代码:

s=input().upper()
c=input().upper()
ss=""
cnt=0
for i in s:
if i in c and i not in ss:
ss+=i.upper()
cnt+=1
print(cnt)

7-20 sdut-分析每队活动投票情况

分数 10

作者 周雪芹

单位 山东理工大学

利用集合分析活动投票情况。

第一小队有五名队员,序号是1,2,3,4,5; 第二小队也有五名队员,序号6,7,8,9,10。

输入一个得票队员的编号的字符串,求第一、二小队没有得票的队员。在一行中输入得票的队员的序列号,用逗号隔开。

输入格式:

在一行中输入得票的队员的序列号,用逗号隔开。

输出格式:

在第一行中输出第一小队没有得票的队员序号,用空格分开;

在第二行中输出第二小队没有得票的队员序号,用空格分开。

输入样例:

1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9

输出样例:

2

6 8

  实现代码:

num1=[int(num) for num in input().split(',')]
l1=[1,2,3,4,5]
l2=[6,7,8,9,10]
ll1=[]
ll2=[]
for i in l1:
if i not in num1:
ll1.append(i)
for i in l2:
if i not in num1:
ll2.append(i)
print(*ll1,sep=" ")
print(*ll2,sep=" ")

赞(0)
未经允许不得转载:171主机测评 » sdut-python-实验四-python序列结构(11-20)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址