加粗的题目 有测试点未通过 有看出问题的 望大佬指导~~
7-1 生成3的乘方表 (15 分)
输入一个非负整数n,生成一张3的乘方表,输出3
0~3n的值。可调用幂函数计算3的乘方。
a=int(input())
for i in range(a+1):
print("pow({},{}) = {}".format(3,i,3**i))
7-2 统计素数并求和 (20 分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
a,b=map(int,input().split())
def primer(x):
count=0
sum=0
for i in range(1,x+1):
flag=True
for j in range(2,i):
if i%j==0:
flag=False
if flag==True:
count=count+1
sum=sum+i
return count,sum
x=primer(a)
y=primer(b)
print(y[0]-x[0],y[1]-x[1])
7-3 猴子吃桃问题 (15 分)
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
n=int(input())
m=1
for i in range(n,1,-1):
m=(m+1)*2
#n=(n+1)<<1
print(m)
7-4 验证“哥德巴赫猜想” (20 分)
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
import math
a=int(input())
def primer(x):
flag=True
for i in range(2,int(math.sqrt(x))+1):
if x%i==0:
flag=False
break
return flag
for i in range(2,a):
if primer(i) and primer(a-i):
print(a,'=',i,'+',a-i)
break
7-5 求e的近似值 (15 分)
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
n=int(input())
def factorial(x):
sum=1
for i in range(1,x+1):
sum*=i
return sum
m=1
for i in range(1,n+1):
m+=1/factorial(i)
if n==1:
print("2.00000000")
elif n==0:
print("1.00000000")
else:
print('{:.9}'.format(m))
7-6 输出前 n 个Fibonacci数 (15 分)
本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,…。
list1=[1,1]
for i in range(45):
list1.append(list1[-1]+list1[-2])
# print(list1)
n=int(input())
for i in range(n):
print('{:11}'.format(list1[i]),end='')
if (i+1)%5==0 and i!=0 and n!=5:
print()
7-7 统计学生平均成绩与及格人数 (15 分)
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
n=int(input())
if n==0:
print('average = 0.0')
print('count = 0')
else:
list=input().split()
sum=0
count=0
for i in range(n):
tmp=int(list[i])
sum+=tmp
if tmp>=60:
count+=1
print('average = {:.1f}'.format(sum/n))
print('count = {}'.format(count))
7-8 求分数序列前N项和 (15 分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
n=int(input())
list=[1,2]
for i in range(n):
list.append((list[-1]+list[-2]))
sum=0
for i in range(n):
sum+=list[i+1]/list[i]
print('{:.2f}'.format(sum))
7-9 查询水果价格 (15 分)
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
print('[1] apple')
print('[2] pear')
print('[3] orange')
print('[4] grape')
print('[0] exit')
count=0
list=input().split()
for i in range(len(list)):
x=int(list[i])
count+=1
if count==6:
break
elif x==0:
break
elif x==1:
print('price = 3.00')
elif x==2:
print('price = 2.50')
elif x==3:
print('price = 4.10')
elif x==4:
print('price = 10.20')
else:
print('price = 0.00')
7-10 最大公约数和最小公倍数 (15 分)
本题要求两个给定正整数的最大公约数和最小公倍数。
m,n=map(int,input().split())
if m>n:
m,n=n,m
for i in range(m,0,-1):
if m%i==0 and n%i==0:
yue=i
break
print(yue,int(m*n/yue))
7-11 判断素数 (20 分)
判断一个给定的正整数是否素数
n=int(input())
list=[]
def ispremi(x):
flag=True
for i in range(2,x):
if x%i==0:
flag=False
break
if flag==True:
print('Yes')
else:
print('No')
for i in range(n):
x=int(input())
list.append(x)
for i in list:
ispremi(i)
7-19 矩阵运算 (20 分)
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
n=int(input())
a=[]
for i in range(n):
b=input().split()
a.insert(i,b)
suma=0
line=0
lastrow=0
lastcol=0
# for i in range(n):
# for j in range(n):
# sum+=int(a[i][j])
suma=sum(int(a[i][j]) for i in range(n) for j in range(n))
line=sum(int(a[i][n-1-i]) for i in range(n))
lastrow=sum(int(a[n-1][i]) for i in range(n))
lastcol=sum(int(a[i][n-1]) for i in range(n))
# print(suma)
# print(line)
# print(lastrow)
# print(lastcol)
print(suma-line-lastcol-lastrow+int(a[n-1][n-1])+int(a[0][n-1])+int(a[n-1][0]))
7-20 求矩阵各行元素之和 (15 分)
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
m,n=map(int,input().split())
a=[]
for i in range(m):
x=input().split()
a.insert(i,x)
for i in range(m):
print(sum(int(a[i][j]) for j in range(n)))
7-21 判断上三角矩阵 (15 分)
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
m=int(input())
k=0
while k<m:
n=int(input())
a=[]
k+=1
flag=True
for j in range(n):
x=input().split()
a.insert(j,x)
# print(a)
for i in range(n):
for j in range(i):
if int(a[i][j])!=0:
flag=False
break
if flag==True:
print('YES')
else:
print('NO')
7-23 求矩阵的局部极大值 (15 分)
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
m,n=map(int,input().split())
a=[]
flag=False
for i in range(m):
x=input().split()
a.insert(i,x)
for i in range(1,m-1):
for j in range(1,n-1):
tmp=int(a[i][j])
tmp1=int(a[i][j+1])
tmp2=int(a[i][j-1])
tmp3=int(a[i-1][j])
tmp4=int(a[i+1][j])
if tmp>tmp1 and tmp>tmp2 and tmp>tmp3 and tmp>tmp4:
print(tmp,i+1,j+1)
flag=True
if flag==False:
print('None',m,n)
7-24 打印九九口诀表 (15 分)
下面是一个完整的下三角九九口诀表:
n=int(input())
for i in range(1,n+1):
for j in range(1,i+1):
print('{}*{}={:<4}'.format(j,i,j*i),end='')
print()
7-25 输出三角形字符阵列 (15 分)
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
n=int(input())
k=65
for i in range(n,0,-1):
for j in range(i):
print(chr(k),end=' ')
k+=1
print()
7-28 矩阵转置 (10 分)
将一个3×3矩阵转置(即行和列互换)。
a=input().split()
b=[]
c=[]
for i in a:
b.append(int(i))
c.append(b[0:3])
c.append(b[3:6])
c.append(b[6:9])
d=[[row[col] for row in c]for col in range(3)]
for i in range(3):
for j in range(3):
print('{:>4}'.format(d[i][j]),end='')
print()
7-29 找出不是两个数组共有的元素 (20 分)
给定两个整型数组,本题要求找出不是两者共有的元素。
# 遍历比较两个列表,取出不是共有的元素,然后用set去掉重复的数字
c=[]
k = 0
flag = 1
a = list(map(int, input().split()))
b = list(map(int, input().split()))
m = a[0]
n = b[0]
a = a[1:]
b = b[1:]
for i in range(0, m):
for j in range(0,n):
if (int(a[i]) == int(b[j])):
flag=0
break
if (flag==1):
c.append(a[i])
k=k+1
flag=1
for i in range(0,n):
for j in range(0,m):
if (int(b[i]) == int(a[j])):
flag=0
break
if (flag==1):
c.append(b[i])
k=k+1
flag=1
res = list(set(c))
res.sort(key = c.index)
print(res[0],end="")
for i in range(1,len(res)):
print(' {:d}'.format(res[i]),end="")
7-30 找完数 (20 分)
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
import math
m,n=map(int,input().split())
count=0
for i in range(m,n+1):
lst1=[1]
for k in range(2,int(math.sqrt(i))+1):
if i%k==0:
lst1.append(k)
if i//k not in lst1:
lst1.append(i//k)
lst1.sort()
factorsum=sum(lst1)
if i==factorsum:
count+=1
print(str(i)+' = '+' + '.join(map(str,lst1)))
if count==0:
print('None')