a=int(input('请输入终点值:'))
Sn=1
for i in range(2,a+1):
Sn=Sn+1/i
print("总和为:",Sn)
6.
(只要实现四种方式中的一种即可)
编写程序
,
打印九九乘法表。 要求输出九九乘法表的各种显示效果(
上三角、下三角、矩形块等方 式)
提示:\t,横向建表
for i in range(9,0,-1):
for j in range(1,i+1):
m=i*j
if i==j:
print(i,'*',j,'=',m,end='\n')
else:
print(i,'*',j,'=',m,end='\t')
for i in range(1,10):
for j in range(1,i+1):
m=i*j
if i==j:
print(i,'*',j,'=',m,end='\n')
else:
print(i,'*',j,'=',m,end='\t')
7.
编写程序输入三角形的
3
条边
,
先判断是否可以构成三角形
,
如果可以
, 则进一步求三角形的周长和面积
,
否则报错
“
无法构成三角形
!”
。其运行效果如图下图所示(
结果均保留1
位小数
)
。
提示
:
(1)3
个数可以构成三角形必须满足如下条件
:
每条边的边长均大于
0, 并且任意两边之和大于第三边。
(3)其中根号需要导入 math 库并调用 sqrt 函数
from math import *
while(1):
a=eval(input('请输入三角形的第一条边:'))
b=eval(input('请输入三角形的第二条边:'))
c=eval(input('请输入三角形的第三条边:'))
if (a+b>c and b+c>a and a+c>b):
if (a>0 and b>0 and c>0):
h=(a+b+c)/2
area=sqrt(h*(h-a)*(h-b)*(h-c))
print('输出三角形面积为:',area)
break
else :
print('无法构成三角形,请重新输入!')
8.
编写程序
,
输入
x,
根据如下公式计算分段函数
y
的值。请分别利用单 分支语句双分支结构以及条件运算语句等方法实现。
提示:需要调用
math
模块,其中
math.sqrt()
是根号;
math.exp()
是指数
e
;
math.log()
是
ln
;
math.sin()
是
sin;
from math import *
x=eval(input('请输入x值:'))
if(x>=0):
y=(x**2-3*x)/(x+1)+2*pi+sin(x)
elif(x<0):
y=log10(-5*x)+6*sqrt(abs(x)+exp(4))-(x+1)**3
print('分段函数y的值为:',y)
9.
编写程序
,
输入一元二次方程的
3
个系数
a
、
b
和
c,
求
ax
2
+bx+c=0
方
程的解。结果如下图所示
提示:
(1)
方程
ax
2
+bx+c=0
的解有以下几种情况。
①
a=0 and b=0,
无解。
②
a=0andb!=0,
有一个实根
③
b2-4ac=0,
有两个相等实根 ○
4. b2-4ac>0,有两个不等实根
⑤
b2-4ac<0,
有两个共轭复根
(2)
可以利用
“ print(str. format("
此方程有两个不等实根
:{0}+{1}
和 {0}-{1}",realPart, imag Part,)”的语句形式输出方程的两个共轭复根。
from math import *
a=float(input('请输入一元二次方程的a值:'))
b=float(input('请输入一元二次方程的b值:'))
c=float(input('请输入一元二次方程的c值:'))
m=b**2-4*a*c
if (a==0 and b==0):#只有c值,无解
print('方程无解')
elif(a==0 and b!=0):
x=-c/b
print('方程有一个实根:',x)#一元一次方程形式
elif(m==0):#二元一次方程形式,b2-4ac=0,有两个相等实根
x=-b/(2*a)
print('方程有两个相等实根为:',x)
elif(m>0):#b2-4ac>0,有两个不等实根
x1=(-b+m)/(2*a)
x2=(-b-m)/(2*a)
elif(m<0):#方程无解,但可求两个共轭复根
real=-b/(2*a)
image=sqrt(-m)
print(str.format("此方程有两个不等实根:{0}+{1}和{0}-{1}",real,image))
10.
编写程序
,
输入整数
n(n≥0),
分别利用
for
循环和
while
循环求
n!
。
提示:
(1) n!=n×(n-1)×(n-2)×…×2×1
。例如
5!=5×4×3×2×1=120,
特别地
,0!=1
(2)
一般情况下
,
累乘的初值为
1,
累加的初值为
0
。
(3)
如果输入的是负整数
,
则继续提示输入非负整数
,
直到
n≥0
。
n=int(input('请输入整数:'))
Sn=1
if n==0:
print('0!=1')
else:
for i in range(1,n+1):
Sn=Sn*i
print('结果为:',Sn)
11.编写程序,产生两个 0~100(包含 0 和 100)的随机整数 a 和 b,求这两个整数的最大公约数和最小公倍数。
提示:(1)可以利用“ random, randint(0,100)”的语句形式生成 0-100(包 含 0 和 100)的随机整数。
(2)利用“辗转相除法”求最大公约数,具体算法如下。
①对于已知的两个正整数 m、n,使得 m>n
②m除以n得余数r
③若r≠0,则令m+n,n←r,继续相除得到新的余数r。若仍然 r≠0,则重复此过程,直到 r=0 为止。最后的m就是最大公约数。
(3)求得了最大公约数,最小公倍数就是已知的两个正整数之积除以最大公约数的商。
法一:
from random import *
m=randint(0,101)
n=randint(0,101)
print(m,n)
if m<n:
m,n=n,m
m1=m
n1=n
else:
m1=m
n1=n
if n1==0:
print('无最大公因数和最小公倍数')
while(n1!=0):
r=m1%n1
m1=n1
n1=r
print('最大公因数为:', m1)
print('最小公倍数为:',m*n/m1)
法二:
import random
m=random.randint(0,100)
n=random.randint(0,100)
print(m,n)
if m>=n:
if n==0:
print('无最大公约数')
print('无最小公倍数')
else:
m1=m
n1=n
while (1):
r=m1%n1
if r!=0:
n1=n1%r
m1=r
continue
else :
gcd=n1
break
print('最大公因数为:',gcd)
print("最小公倍数:",m*n/gcd)
else :
m,n=n,m
if n==0:
print('无最大公约数')
print('无最小公倍数')
else :
m1=m
n1=n
while (1):
r=m1%n1
if r!=0:
n1=n1%r
m1=r
continue
else :
gcd=n1
break
print('最大公因数为:',gcd)
print("最小公倍数:",m*n/gcd)
法二有错,但不知道咋改,呜呜呜,暂存一下