Python第六周作业:正则表达式的点星匹配、计算函数曲线与x轴包围的面积、哥德巴赫猜想.........
1.正则表达式的点星匹配
描述
正则表达式中符号.表示匹配任意一个单字符,*表示匹配0个或者多个前面的单字符。
对于给定字符串和带有.和*的正则表达式,输出匹配结果。
例如:(字符串, 正则表达式 -> 匹配结果)
'aa', 'a' -> False
'aa', 'aa' -> True
'aa', 'a*' -> True
'aa', 'a' -> False
'aa', '.*' -> True
'aab', 'c*a*b' -> True
'aa', 'b*a*ac*' -> True
输入格式
输入包含两行:
1. 待匹配字符串
2. 正则表达式
输出格式
若正则表达式能够匹配第一行字符串则输出True,否则,输出False
勿理!!!(学舍友的混分杰作)会写的麻烦留言,交流交流,谢谢。
1 str1=input() 2 str2=input() 3 if str1==str2: 4 print("True") 5 elif str1=="aaa" and str2=="aab*a": #混分的,不正确的(学舍友的,^.^) 6 print("True") 7 else: 8 print("False")
【博友提供】非常感谢!博友提供的方法和对应的知识点链接(留言在最下方)
链接https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664
1 import re 2 str1=input() 3 str2=input() 4 if re.match(str2,str1): 5 print("True") 6 else: 7 print("False")
2.计算函数曲线与x轴包围的面积
描述
计算函数曲线在区间(a,b)与x轴包围的面积,可将这个区域平行于y轴切分成相等宽度的小梯形,每个梯形的面积可近似求出,所有梯形面积的和就是函数曲线与x轴包围的面积,也就是函数在给定区间的积分值,dx越小,梯形近似度越高,计算结果越精确,也就是说区间切分段的越多,结果越精确。
参考下图,计算函数sin(x)在区间(a,b)与x轴包围的面积,a,b由用户输入,区间切分多少段也由用户输入。
输入格式
输入包括两行
第一行是由空格分隔的两个实数,代表积分区间
第二行是一个正整数,代表切分数量
输出格式
积分值,结果保留2位小数
1 import math 2 a,b = map(eval,input().split(' ')) 3 n=int(input())#n为切分数量 4 dx=abs(b-a)/n 5 s_sum=0 6 for i in range (1,n+1): 7 s_small=abs(math.sin(a)*dx) 8 a=a+dx 9 s_sum=s_sum+s_small 10 print("{0:.2f}".format(s_sum))
3.哥德巴赫猜想
描述
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
输入格式
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。
输出格式
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
1 N = int(input())#请输入20亿以内的偶数 2 p1='' 3 q1='' 4 q=0 5 for p in range(2,(int(N/2)+2)): 6 q=N-p; 7 p1="素数" 8 q1="素数" 9 for x in range(2,p): 10 if (p%x)==0: 11 p1="不是素数" 12 for y in range(2,q): 13 if (q%y)==0: 14 q1="不是素数" 15 if p1=="素数" and q1=="素数": 16 print("N = {} + {}".format(p,q)) 17 break
4.鸡兔同笼B
描述
一个笼子里面关了若干只鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外),已经知道了笼子里面脚的总数feets,则笼子里至少有多少只动物,至多有多少只动物?
输入格式
第一行输入一个正整数,表示测试数据的组数n
接下来的n行,每行一个整数,代表脚的数量
输出格式
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数间用一个空格分开
如果没有满足要求的答案,则输出用空格分隔的两个0
1 n=eval(input()) 2 for i in range (n): 3 a=eval(input()) 4 if (a % 2 != 0): #n为奇数 5 max=min=0 6 elif (a % 4) == 0:#n是4 的倍数 7 max = a / 2 #全为鸡时最多 8 min = a / 4 #全为兔时最少 9 else: 10 max = a / 2 11 min = (a /4)+(a%4)/2 12 print ("%d %d"%(min,max))
5.与7无关的数
描述
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位的数字为7,则称其为与7相关的数、
求所有小于n(n < 100)的与7无关的正整数以及他们的平方和。
输入格式
输入为一个正整数
输出格式
两行
第一行为所有与7无关的数,以列表形式输出,逗号分开
第二行为他们的平方和
1 n=int(input()) 2 list=[] 3 sum=0 4 for i in range(1,n): 5 if i%7!=0 and i//10!=7 and i%10!=7: 6 list.append(i) 7 sum=sum+i*i 8 print(list) 9 print(sum) 10
6.完美立方数
描述
费马大定理断言,当整数n > 2时,关于a,b,c的方程a**n = b**n + c**n没有正整数解。
该定理被提出来后,历经三百多年,经历多人猜想辩证,最终在1995年被英国数学家安德鲁.怀尔斯证明。
当然,可以找到大于1的4个整数满足完美立方等式:a**3 = b**3 + c**3 + d**3 (例如12**3 = 6**3 + 8**3 + 10**3)
编写一个程序,对于任意给定的正整数N(N<=100),寻找所有的四元组(a,b,c,d),满足a**3 = b**3 + c**3 + d**3
其中 1 < a,b,c,d <=N
输入格式
正整数N(N <= 100)
输出格式
按照a的值从小到大,每行输出一个完美立方等式,其中b,c,d按照非降序排列输出。若两个完美立方式中a值相同,则b值小的先输出;在b值相等的情况下,c值小的先输出,在b,c都相等的情况下,d值小的先输出。
方法一:
1 N= int(input()) 2 for a in range(2,N+1): 3 for b in range(2,a): 4 for c in range(b,a): 5 for d in range(c,a): 6 if a**3==b**3+c**3+d**3: 7 print("Cube = {},Triple = ({},{},{})" .format(a,b,c,d))
方法二:
1 n = int(input()) # n范围内的立方数 2 3 list_cube = [0] # 用于存储立方数的列表 4 5 for i in range(1, n + 1): 6 7 list_cube.append(i * i * i) 8 9 for a in range(6, n + 1): 10 for b in range(2, a - 1): 11 if list_cube[a] < (list_cube[b] + list_cube[b + 1] + list_cube[b + 2]): 12 break 13 for c in range(b + 1, a): 14 if list_cube[a] < (list_cube[b] + list_cube[c] + list_cube[c + 1]): 15 break 16 for d in range(c + 1, a): 17 if list_cube[a] == (list_cube[b] + list_cube[c] + list_cube[d]): 18 print("Cube = %d,Triple = (%d,%d,%d)" % (a, b, c, d))
7.高次方程求根
描述
有函数
已知f(1.5)>0,f(2.4)<0,且在[1.5,2.4]区间只且只有一个根,求该根。要求四舍五入到小数点后6位
(舍友提供)
1 def f(x): 2 result=x**5-15*x**4+85*x**3-225*x**2+274*x-121 3 return result 4 5 a=1.5 6 b=2.4 7 c=(a+b)/2 8 while abs(f(c))>1e-6: 9 if f(a)*f(c)<0: 10 b=c 11 else: 12 a=c 13 c=(a+b)/2 14 print("{:.6f}".format(c))
YouTube频道:https://www.youtube.com/channel/UCFlPFjCqK7ezLJZh3_Iu3oA
B站(DGX杂学):https://space.bilibili.com/449154488
微信公众号:DGX杂学
抖音:DGX杂学
博客园:https://www.cnblogs.com/yeu4h3uh2/


浙公网安备 33010602011771号