大家好,我是Python领域的博主。
如果你是编程爱好者可以小编一起学习,在这里我每天都会发Python的基础知识,以及相关的代码。
如果文章有什么错误的地方,请不吝赐教。
觉得博主文章写的还错的话,请三连支持一下博主哦
我一直坚信一句话:我相信努力一定会有回报,这个回报可能很慢,但请相信,只要你坚持下去一定会更好的。
系列专栏:
经典习题
求最大公约数和最小公倍数
练习题
循环基础练习-万字篇 字符串习题(上
字符串习题(下
数值运算小练_
简单的分支(上)
简单分支(下)
1.特殊数列求和
类型:流程控制
描述
用户输入一个小于10的正整数,求1 + 12 + 123 + 1234 + …… 的前n项的和,当输入大于或等于10时,输出“data error!”
输入格式
一个小于10的正整数
输出格式
数列的前 n 项和或“data error!”
示例
输入:5
输出:13715
num=int(input())
sum=1
temp=1
for i in range(2,num+1):temp=temp*10+isum=sum+temp
if num>=10:print("data error!")
else:print(sum)
2.分数数列前n项和
描述
输入一个正整数 n, 计算并输出数列1、-1/2、2/3、-3/5、4/8、-5/12...的前n项和。
输入格式
输入一个正整数 n
输出格式
以浮点数形式输出数列前n项的和
示例
输入:2
输出:0.5
n = int(input())
a, b = 1, 2
flag = -1
result = 1.0
for i in range(1, n):result = result + flag * a / ba, b = i + 1, a + bflag = -flag
print(result)
3.阶乘和数
描述
一个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例如正整数145,1!+4!+5!等于145,因此145就是一个阶乘和数。输入一个正整数,计算它的各位数字的阶乘之和,判断它是否是一个阶乘和数。当输入的数字为阶乘和数时,输出“YES”,否则输出“NO”。注意:输入的正整数的最高位不为0。
输入格式
一个正整数。
输出格式
输出字符串“YES”或“NO”
示例 1
输入:145
输出:YES
示例 2
输入:1400
输出:NO
import math
n=input()
sum=0
for i in n:num=math.factorial(int(i))sum=sum+num
if sum==int(n):print("YES")
else:print("NO")
'''import mathn = input()
s = sum(math.factorial(int(i)) for i in n) # 推导式
if int(n) == s:print('YES')
else:print('NO') '''
4.计算圆周率
类型:流程控制
描述
根据下面的泰勒级数关系式,依次累加绝对值不小于阈值的项,求圆周率的值。
输入格式
在一行中给出小于1且大于0的阈值。
输出格式
输出满足阈值条件的近似圆周率,精确到小数点后6位。
示例
输入:0.000001
输出:3.141591
n=eval(input())
pi4=k=0
f=1
s=0
while abs(1/(2*k+1))>=n:pi4=pi4+f/(2*k+1)k=k+1f=-f
print("{:6f}".format(4*pi4))
5.求e的近似值B
类型:流程控制
描述
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。
本题要求用该公式计算e的近似值,若最后一项(1/n!)小于给定的阀值时,终止计算(该项不计入)。
输入格式
输入一个小于 1 的浮点数做为阈值
输出格式
输出满足阈值条件的近似 e,输出保留小数点后 8 位。
示例
输入:0.00000001
输出:2.71828183
import math
threshold=float(input())
e=1
n=1
while True:if 1/math.factorial(n)<threshold:breakelse:e=e+1/math.factorial(n)n=n+1
print("{:.8f}".format(e))
6.二分法求函数的零点
类型:流程控制
描述
现有方程:f(x) = x5-15x4+85x3-225x2+274x-121, 已知f(x)在[1.5,2.4]区间单调下降,且在该区间f(x)==0有且只有一个根,用二分法求解该根。
输入格式
输入一个正整数n,当f(x)值小于10-n时认为函数值为0
输出格式
输出方程在[1.5,2.4]区间的根,精确到小数点后第6位
示例
输入:9
输出:1.849016
def f(x):return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121def bisection_method(low, high):while True:mid = (low + high) / 2if abs(f(mid)) < 1 * 10 ** -n:return '{:.6f}'.format(mid)elif f(mid) < 0:high = midelse:low = midif __name__ == '__main__':n = int(input())Low, High = 1.5, 2.4print(bisection_method(Low, High))
7.高次方程求根
类型:流程控制
描述
有函数
已知f(1.5)>0,f(2.4)<0,且在[1.5,2.4]区间只且只有一个根,求该根(假定多项式值小于10-6时可近似为0)。要求四舍五入到小数点后6位
输入格式
无
输出格式
该方程在[1.5,2.4]区间的根
** 示例**
输出:x.xxxxxx
def f(x):return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121x1 = 1.5
x2 = 2.4
while abs(f((x1 + x2) / 2)) > 1e-6:if f((x1 + x2)/2)> 0:x1 = (x1 + x2) / 2else:x2= (x1 + x2) / 2
print("{:.6f}".format((x1+x2)/2))
8.计算函数曲线与x轴包围的面积
类型:流程控制
描述
计算函数曲线在区间(a,b)与x轴包围的面积,可将这个区域平行于y轴切分成相等宽度的小梯形,每个梯形的面积可近似求出,所有梯形面积的和就是函数曲线与x轴包围的面积,也就是函数在给定区间的积分值,dx越小,梯形近似度越高,计算结果越精确,也就是说区间切分段的越多,结果越精确。
参考下图,计算函数sin(x)在区间(a,b)与x轴包围的面积,a,b由用户输入,区间切分多少段也由用户输入。
输入格式
输入包括两行
第一行是由空格分隔的两个实数,代表积分区间(input().split()可把空格分隔的输入切分成两部分)
第二行是一个正整数,代表切分数量
输出格式
积分值,结果保留2位小数
示例
输入:
-3.14 3.14
1000
输出:
4.00
# 梯形的上底 abs(math.sin(x + i * dx),函数值可能为负,用abs()取其绝对值
# 梯形的下底 abs(math.sin(x + i * dx + dx)) ,函数值可能为负,用abs()取其绝对值
# 梯形的面积公式:(上底+下底)×高÷2, 用字母表示:S=(a+c)×h÷2import matha, b = map(float, input().split()) # 输入区间起点和终点
n = int(input()) # 输入区间切分数量
area = 0 # 面积初值
x = a # 设定起点x值
dx = abs(a - b) / n # 计算每个小区间的高度,即每个小梯形的高度
for i in range(n): # 遍历n个区间,计算每个小梯形面积并累加到一起area = area + dx * (abs(math.sin(x + i * dx)) + abs(math.sin(x + i * dx + dx))) / 2
print("{:.2f}".format(area)) # 输出面积值
9.百分制成绩转换五分制(循环)
类型:流程控制
描述
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。输入数据不合法时输出“data error!”。用户可反复输入成绩进行转换,输入负数时输出“end”并结束程序
输入格式
每次输入一个浮点数,代表百分制成绩;反复输入,输入负数结束程序
输出格式
根据每一次的输入值分别输出A、B、C、D、E中的一个字母或"data error!"或"end"。输出end时程序结束。
示例
输入:
88
99
56
156
-5输出:
B
A
E
data error!
end
while True:score = eval(input())if score < 0:print('end')breakelif score > 100:print('data error!')elif score >= 90:print('A')elif score >= 80:print('B')elif score >= 70:print('C')elif score >= 60:print('D')else:print('E')
小编畅谈:
小编发布的作品都是适合初学者学习,如果你是初学者,可以和小编一起学习,在这里我每天都会发Python的基础知识,以及相关的代码。如果觉得小编写的还不错,关注,点赞,收藏。如果有什么错误之处,请多多指教。我会虚心接受。如果有什么地方不懂,可以私信小编,我会第一时间回复您。