第三章来了
1.计算1到100的和,可以用for循环和while循环。
sum=0;i=1
while(i<=100):
num+=i
i+=1
print(sum)
或者
sum=0
for i in range(1,101):
sum+=i
i+=1
print(sum)
2.计算10到1的和,一样的思路。
sum=0
for i in range(10,0,-1):
sum+=i
i-=1
print(sum)
3.100内的奇数的和。
sum_odd=0
for i in range(1,100):
if(i%2!=0):
sum_odd+=i
print(sum_odd)
4.100内偶数的和。
sum_even=0
for i in range(1,100):
if(i%2!=0):
sum_even+=i
print(sum_even)
5.使用不同的方法,输入2000到3000之间的所有闰年。一行18个。只写一种方法,因为其他都都差不多,只不过if的使用方法不同。这里使用的是嵌套。注意这里if(count)不能顶格写,要和第一个if齐平。
count=0
for i in range(2000,3001):
if(i%400==0):
print(str.format("{0:<6}",i),end=" ")
count+=1
else:
if(i%4==0 and i%100!=0):
print(str.format("{0:<6}",i),end=" ")
count+=1
if(count%18==0):
print()
6.求一个数列的和,这里想求多少项可以根据对if(T)里面的值来确定
s=1;i=1;t=1;w=-1
while(True):
i=i*w
t+=2
s+=i*t
if (t==5):
break
print(s)
7.求数列的和,这里限定当最后一项小于10的-6次方的时候停止。
s=1;i=1
while(True):
i+=1
s+=1/i
if(1/i<pow(10,-6)):
break
print(s)
8.打印九九乘法表
(1)矩阵型
for i in range(1,10):
s=""
for j in range(1,10):
s+=str.format("{0:1}*{1:1}={2:<5}",i,j,i*j)
print(s)
注意,这里初始是用s=””,用s+=而不是直接打印print (str.format("{0:1}{1:1}={2:<5}",i,j,ij)).而且注意s=””的位置,要放在第一个for循环的后面。或者换一种输出的方式,;例如:
print("%d*%d=%2d" % (i,j,i*j),end=" ")
print("")
(2)下三角
for i in range(1,10):
s=""
for j in range(1,i+1):
s+=str.format("{0:1}*{1:1}={2:<5}",i,j,i*j)
print(s)
(3)上三角
for i in range(1,10):
for j in range(i,10):
print(str.format("{0:1}*{1:1}={2:<5}",i,j,i*j),end="")
print()
9.判断三角形
import math
a=float(input("请输入三角形的边A: "))
b=float(input("请输入三角形的边B: "))
c=float(input("请输入三角形的边C: "))
zc=a+b+c
h=1/2*zc
mj=math.sqrt(h*(h-a)*(h-b)*(h-c))
if (a<0 or b<0 or c<0):
print("无法构成三角形")
elif (a+b<=c or a+c<=b or b+c<=a):
print("无法构成三角形")
else:
print(str.format("三角形的边长分别为:a={0},b={1},c={2}",a,b,c))
print(str.format("三角形的周长={0},面积={1}",zc,mj))
10.选择结构,运算数学方程。注意,这里一开始要引用math函数,运算式子里面sinx用math.sin(x)表示,log函数用math.log(x,[base])表示,base表示底数,如果没有底数,默认底数为e,即lnx表示为log(x)。
import math
x=float(input("请输入x: "))
y1=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)
if x<0:
y1=math.log(-5*x)+6*math.sqrt(abs(x)+math.e**4)-pow((x+1),3)
if(x>=0):
y2=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)
if(x<0):
y2=math.log(-5*x)+6*math.sqrt(abs(x)+math.e**4)-pow((x+1),3)
if(x>=0):
y3=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x)
else:
y3=math.log(-5*x)+6*math.sqrt(abs(x)+math.e**4)-pow((x+1),3)
y4=(x*x-3*x)/(x+1)+2*math.pi+math.sin(x) if ((x>=0)) else math.log(-5*x)+6*math.sqrt(abs(x)+math.e**4)-pow((x+1),3)
print(str.format("一句单分支语句方法:x={0},y={1}",x,y1))
print(str.format("两句单分支语句方法:x={0},y={1}",x,y2))
print(str.format("双分支结构方法:x={0},y={1}",x,y3))
print(str.format("条件运算语句方法:x={0},y={1}",x,y4))
11.解一元二次方程,注意if语句里面的条件
import math
print("求解一元二次方程ax²+bx+c=0的解")
a=float(input("请输入a的值:"))
b=float(input("请输入b的值:"))
c=float(input("请输入c的值:"))
deta=b**2-4*a*c
if(a==0 and b==0):
print("无解")
if(a==0 and b!=0):
print("此方程有一个实根:",-c/b)
if (a!=0 and b!=0 and deta>0):
x1=(-b+math.sqrt(b**2-4*a*c))/2*a
x2=(-b-math.sqrt(b**2-4*a*c))/2*a
print(str.format("此方程有两个不相等实根:{0}和{1}",x1,x2))
if (a!=0 and b!=0 and deta==0):
x1=x2=-b/2*a
print(str.format("此方程有两个相等实根{0}",x1))
if (a!=0 and b!=0 and deta<0):
x1=complex(-b/2*a,(math.sqrt(abs(b**2-4*a*c)))/2*a)
x2=complex(-b/2*a,-(math.sqrt(abs(b**2-4*a*c)))/2*a)
print(str.format("此方程有两个共轭复根:{0}和{1}",x1,x2))
12.用两种方法求阶乘
n=int(input("请输入非负整数n:"))
while(n<0):
n=int(input("请输入非负整数n"))
t=n
w1=n;w2=n
if n==0:print("0!=1")
if n>0:
for i in range(1,t):
t=t*i
print("for循环: %d!=%d"%(n,t))
while(True):
w1-=1
w2*=w1
if(w1==1):
break
print("while循环:%d!=%d"%(n,w2))
13.定义两个随机数,求两个数的最大公约数和最小公倍数。注意,导出两个随机数,先要用import random,还有random.randint里面的范围是前闭后闭,而不是range函数的前闭后开。
import random
a=random.randint(0,100)
b=random.randint(0,100)
c=1;e=a;f=b
while(True):
c+=1
if(c%a==0 and c%b==0):
break
while(a!=b):
if(a>b):a=a-b
else:b=b-a
print("整数a=%d,整数b=%d"%(e,f))
print("最大公约数=%d,最小公倍数=%d"%(a,c))
前一个while部分是求出最小公倍数,后面一个while部分是求最大公约数。