Python程序设计与算法基础第三章上机题目

第三章来了

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部分是求最大公约数。
感谢浏览博客,最后鸟妹镇楼(≖ᴗ≖)✧

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值