Python程序设计与算法基础教程第四章上机题

第四章来了

1.杨辉三角,很简单
print("1".center(20))
print("1 1".center(20))
print("1 2 1".center(20))
print("1 3 3 1".center(20))
print("1 4 6 4 1".center(20))
2.三角形相关的问题,注意记得先声明math函数。
import math
a=float(input("请输入直角三角形的直角边A(A>0):"))
b=float(input("请输入直角三角形的直角边B(B>0):"))
c=math.sqrt(a**2+b**2)
zc=a+b+c
mj=1/2*a*b
sinA=b/c
sinB=a/c
A=round(math.asin(sinA)*180/math.pi,0)
B=round(math.asin(sinB)*180/math.pi,0)
print(str.format("直角三角形三边分别为:a={0:.1f},b={1:.1f},c={2:.1f}",a,b,c))
print(str.format("三角形的周长={0:.1f},面积={1:.1f}",zc,mj))
print(str.format("三角形两个锐角的度数分别为:{0:.1f}和{1:.1f}",A,B))
3.对随机数排序。注意提前声明random函数
import random
a=random.randint(0,100)
b=random.randint(0,100)
c=random.randint(0,100)
print(str.format("原始值: a={0},b={1},c={2}",a,b,c))
ma=max(a,b,c)
mi=min(a,b,c)
me=a+b+c-ma-mi
print(str.format("(方法一)升序值:a={0},b={1},c={2}",mi,me,ma))
if(a>b):a,b=b,a
if(a>c):a,c=c,a
if(b>c):b,c=c,b
print(str.format("(方法二)升序值:a={0},b={1},c={2}",a,b,c))
4.党费问题。
s=int(input("请输入有固定工资的党员的月工资:"))
f=1
if(s<=400):
     f=0.5/100*s
elif(s>=401 and s<=600):
    f=1/100*s
elif(s>=601 and s<=800):
    f=1.5/100*s
elif(s>=801 and s<=1500):
    f=2/100*s
else:f=3/100*s
print(str.format("月工资={0},交纳党费{1:.1f}",s,f))
5.一个简单的计算器
x=float(input("请输入操作数x:"))
y=float(input("请输入操作数y:"))
c=str(input("请输入操作符:"))
z=1
if(c=="+"):
    z=x+y
    print(str.format("{0}{1}{2}={3}",x,c,y,z))
elif(c=="-"):
    z=x-y
    print(str.format("{0}{1}{2}={3}",x,c,y,z))
elif(c=="*"):
    z=x*y
    print(str.format("{0}{1}{2}={3}",x,c,y,z))
elif(c=="/"):
    if(y==0):print("分母为0,零除异常")
    else:
        z=x/y
        print(str.format("{0}{1}{2}={3}",x,c,y,z))
else:
    if(y==0):print("分母为0,取余异常")
    else:
        z=x%y
        print(str.format("{0}{1}{2}={3}",x,c,y,z))
6.判断三角形
a=float(input("请输入三角形的边a:"))
b=float(input("请输入三角形的边b:"))
c=float(input("请输入三角形的边c:"))
ma=max(a,b,c)
mi=min(a,b,c)
if(a+b>c and a+b>c and b+c>a):
    if(a==b==c):print("此三角形为等边三角形!")
    elif(a==b or a==c or b==c):print("此三角形为等腰三角形!")
    elif(ma**2==mi**2+(a+b+c-ma-mi)**2):print("此三角形为直角三角形")
    else:print("此三角形是一个普通三角形")
else:print("无法构成三角形")
7.鸡兔同笼问题,注意合理运用存在的关系。判断无解可以用脚数是一定大于等于头数。
h=int(input("请输入总头数: "))
f=int(input("请输入总脚数: "))
r=1;c=1
while(f%2!=0):
    print("头数必须是偶数")
    f=int(input("请输入总脚数: "))
r=int(f/2-h)
c=int(h-r)
if(f<2*h):print("无解,请重新运行测试!")
else:
    print("方法一:鸡:",c,"只"",""兔: ",r,"只")
for x in range(0,h+1):
    if(2*x+4*(h-x)==f):
        print("方法二:鸡:",x,"只"",""兔: ",h-x,"只")
        break
    if(f<2*h):
        print("无解,请重新运行测试!")
        break
8.计算ex的近似值。
ex=1
n=1
j=1
x=float(input("请输入x:"))
w=1
while(w/j>=pow(10,-6)):
    w*=x
    j*=n
    n+=1
    ex+=w/j
print("pow(e,x)= ",ex)
9.迭代法求平方根,这里设置x的初始值为1/2a
import math
a=float(input("请输入a的值"))
x=a/2
while(abs(x-math.sqrt(a))>pow(10,-6)):
    x=0.5*(x+a/x)
print(x)
10.韩信点兵问题。
print("0~1000中用3除余2,用5除余3,用7除余2的数有:")
for i in range(0,1001):
    if(i%3==2 and i%5==3 and i%7==2):
        print(str.format("{0:<5}",i),end="")
11.小球落地问题。运用等差数列来求算,但是这里求算的和题目给出的结果不太一样,不知道怎么回事,所以这个还是仅仅看一下吧。
n=int(input("请输入第n次反弹的数目"))
an=50
sn=1
if n==1:sn=100
if n>1:
    sn=100+200*(1-pow(0.5,n-1))
print(sn,an*pow(0.5,n-1))
12.猴子偷桃问题。
day=8
taozi=1
while(day>0):
    print("第%d天桃子数为: %d"%(day,taozi))
    taozi=(taozi+1)*2
	day-=1
print(sn,an*pow(0.5,n-1))
13.累加问题。递归
import random
n=random.randint(1,10)
t=1
r=0
for i in range(1,n+1):
   r+=t
   t=10*t+1
print(str.format('n={} Sn={}',n,r))

也可以用定义函数的方法

import random
n=random.randint(1,10)
t=1
sn=1
def f(n):
    if n==1:return 1
    if n>1:return f(n-1)*10+1
for i in range(1,n):
    sn+=f(i)
print("n= ",n,"sn= ",sn)    
最近有点迷茫,感觉自己的信管专业前景不是很好,而且又是在一所双非的财经类大学里面。专业学的太过宽泛,学而不精,既学计算机又学管理,但是和相关专业的人竞争又竞争不过。在知乎上面瞎搜了一下自己的专业,有人提议这个专业去干数据库管理员很不错,但是毕业后很多公司不一定要没有工作经验的人,而且未来形势变化也无法预测。未来公有云应该是会越来越多,公司可以将数据库交给第三方来管理,这样的DBA的岗位应该是越来越少。也不知道该肿么办,唉唉,烦死了。

--------------------------------2021年更新-------------------------------
跨专业考计算机上岸
--------------------------------2023年更新-------------------------------
数据开发,离线数仓方向,得物实习中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值