Python作业2
Python0006】爬楼梯
【题目描述】
假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。
【源代码程序】
def Pa(n): if n == 1: return 1 elif n == 2: return 2 elif n == 3: return 4 else: m=Pa(n-1)+Pa(n-2)+Pa(n-3) #递归实现 return m print(Pa(int(input("楼梯级数:"))))
Python0007】杨辉三角形
【题目描述】
输出n(0<n)行杨辉三角形,n由用户输入。
【源代码程序】
def yang_hui(x): triangle = [[1], [1, 1]] # 初始化杨辉三角 n = 3 # 从第三行开始计数,逐行添加 while n <= x: for i in range(0, n-1): if i == 0: # 添加初始列表[1,1],杨辉三角每行的首位和末位必为1 triangle.append([1, 1]) else: # 逐位计算,并插入初始列表中 triangle[n-1].insert(i, triangle[n - 2][i] + triangle[n - 2][i - 1]) n += 1 return triangle x=int(input()) yang_hui(x) triangle = yang_hui(x) # 遍历结果,逐行打印 for i in range(x): print(' '.join(str(triangle[i])).center(100)) # 转为str,居中显示
Python0008】筛法求素数
【题目描述】
用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。
【源代码程序】
from turtle import width def sushu(x): flag=0 y=int(x**0.5) for z in range(2,y+1): res=x%z if res==0: flag=1 if flag==0: return x lis1=[] def sushu2(a,b): for c in range(a,b+1): if sushu(c): lis1.append(sushu(c)) q,w=input().split(" ") q=int(q) w=int(w) sushu2(q,w) flag=0 for d in lis1: flag+=1 print(f" {d}",end=" ") # str(d).rjust(width[5, ]) if flag%5==0 : print() print()
Python0009】查找鞍点
【题目描述】
对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行、列坐标,坐标从1开始)。
提示:鞍点的特点:列上最小,行上最大。
【源代码程序】
import numpy as np num = [int(n) for n in input('').split()] num = np.array(num,dtype=int) num = num.reshape(5,5) for i in range(0,5): for j in range(0,5): if (num[i][j] == min(num[:,j]) & num[i][j] == max(num[i,:])): print("[%s,%s,%s]"%(i+1,j+1,num[i][j]))
【Python0010】正整数的因子展开式
【题目描述】
编写程序,输出一个给定正整数x(x>1)的质因子展开式。
【源代码程序】
a=int(input()) b=str(a) num=[] i=1 while i <= a: if a%i == 0: a = a/i num.append(i) i = 1 i+=1 b+='='+str(num[1]) for j in num[2:]: b+="*"+str(j) print(b)
Python0011】牛顿迭代法
【题目描述】
编写程序,使用牛顿迭代法求方程在x附近的一个实根。
【源代码程序】
from math import fabs def niuudun(a,b,c,d,e): x1=e # 迭代: while True: x=x1 f = ((a * x + b) * x + c) * x + d #原函数 f1 = (3 * a * x + 2 * b) * x + c #求导的函数 x1 = x - f / f1 if (fabs(x1 - x) <= 0.00000001): return x1 num = [float(n) for n in input('').split()] print(("%0.2f")%(niuudun(num[0],num[1],num[2],num[3],num[4])))