python-Computing with Numbers课后题

翻译:显示评估每个表达式的结果。 确保该值的格式正确,以指示其类型(int,long int或float)。 如果表达是非法的,请解释原因。

解:(a)7.4 float     (b)5 int   (c)8 int    (d)非法 原因:sqrt是开方根函数,参数不能为负         (e)11 int

(f)27 longint

总结:

Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数)。

intlongint的区别:long为无限大小的整数,整数后加一个大写或小写的L

***的区别:**是乘方。

翻译:将以下每个数学表达式转换为等效的Python表达式。 您可以假设已导入数学库(通过导入数学)。

解:(a)(3+4)*5       (b)n*(n-1)/2    (c)4*pi*pow(r,2)   

(d) sqrt(r*pow(cos(a),2)+r*pow(sin(a),2))(注意:python中的cos()sin()里面的参数是弧度,若想使用角度,则需要先把角度换为弧度,即radians()

(e)(y2-y1)/(x2-x1)

翻译: 显示由以下每个范围表达式生成的数字列表。

解:(a) [0, 1, 2, 3, 4]         range(5)表示从05(不含5

(b) [3, 4, 5, 6, 7, 8, 9] range(3,10)表示从310(不含10

(c) [4, 7, 10]               range(4,13,3)表示从413,间隔3(不含13

(d) [15, 13, 11, 9, 7]   range(15,5,-2)表示从155,间隔-2(不含5

(e)[]                           range(5,3)表示从53,默认间隔为1,故为空

总结:range(startstopstep)   start默认为0step默认为1

翻译:显示将由以下每个程序片段生成的输出。

解:(a)149162536496481100

(b) 1 : 1;3 : 27;5 : 125;7 : 343;9 : 729

(c)0,12;2,12;4,12;6,12;8,12;done

(d)1;2;3;4;5;6;7;8;9;10;385

翻译:编写一个程序来计算球体的半径的体积和表面积,作为输入。这里有一些可能有用的公式。

解:r=input("输入半径:")

      #注意不能写成4/3,因为4/3的结果是1

V=4.0/3.0*pi*pow(r,2)

A=4*pi*pow(r,2)

print V

print A

翻译:编写一个程序,根据直径和价格计算圆形披萨每平方英寸的成本

解:d=input("输入直径:")

price=input("输入价格:")

result=price/pi*pow(d/2,2)

print result

翻译:编写一个程序,根据氢,碳和氧原子的数量确定碳氢化合物的分子量。 您应该使用以下权重:

解:太简单,pass。分子量=H的数量×权重1+C的数量×权重2+O的数量×权重3

编写一个程序,根据闪光和雷声之间的时间间隔确定照明打击的距离。 声速约为1100英尺/秒,1英里为5280英尺。

解:太简单,pass。距离=速度差×时间间隔

翻译:Konditorei咖啡店以每磅10.50美元的价格出售咖啡加上运费。 每笔订单的价格为每磅0.86美元+ 1.50美元的固定成本。 编写一个计算订单成本的程序。

解:不明白啥意思,pass

使用坐标(x1y1)和(x2y2)指定平面中的两个点。 编写一个程序,通过用户输入的两个(非垂直)点计算直线的斜率。

解:x1=input("x1的值:")

y1=input("y1的值:")

x2=input("x2的值:")

y2=input("y2的值:")

K=(y2-y1)/(x2-x1)

print K

翻译:编写一个接受两个点的程序(参见上一个问题)并确定它们之间的距离

解:x1=input("x1的值:")

y1=input("y1的值:")

x2=input("x2的值:")

y2=input("y2的值:")

D=sqrt(pow(x2-x1,2)+pow(y2-y1,2))

print D

翻译:Gregorian Epact11日到前一个季度月相之间的天数。这个值用于计算复活节的日期。它是通过这些公式计算的(使用int算法):编写一个程序,提示 用户为4位数年份,然后输出该值

解:看不懂啥意思,pass

翻译:编写一个程序,根据三边ab的长度计算三角形的面积

解:a=input("a的值:")

b=input("b的值:")

c=input("c的值:")

#注意是2.0,否则得到的是int类型的值

s=(a+b+c)/2.0

A=sqrt(s*(s-a)*(s-b)*(s-c))

print A

翻译:编写一个程序,以确定在靠在房屋上时达到给定高度所需的梯子长度。 梯子的高度和角度作为输入给出。

解:height=input("高度是:")

angle=input("角度是:")

#注意sin()里面的参数为弧度值,需使用radians()将角度换为弧度

len=height/sin(radians(angle))

print len

翻译:编写程序以查找前n个自然数的总和,其中提供n的值

解:n=input("输入n:")

ans=0

for i in range(n):

    ans=i+ans

print ans+n

翻译:编写一个程序,找出前n个自然数的平方和

解:n=input("输入n:")

ans=0

for i in range(n+1):

    ans=i*i+ans

print ans

翻译:编写程序以汇总用户输入的一系列数字。 该程序应首先提示用户要求总和的数量。 然后它应输入每个数字并打印总和。

解:n=input("求总和的数量:")

ans=0

for i in range(n):

      #a为输入的值

    a=input()

    ans=a+ans

print ans

翻译:编写一个程序,查找用户输入的一系列数字的平均值。 与上一个问题一样,程序将首先询问用户有多少个数字。 注意:即使用户输入都是整数,平均值也应始终为浮点数

注意:mathceil(),floor(),round()的区别。

ceil()向上取整,即ceil(3.1)=4floor()向下取整,即floor(3.9)=3round()是四舍五入。但他们返回的都是float类型。

解:n=input("求总和的数量:")

ans=0

for i in range(n):

    #a为输入的值

    a=input()

ans=a+ans

      #n强制转换为float类型

average=ans/float(n)

print average

翻译:通过对本系列的术语求和,编写一个近似于π值的程序:程序应提示用户输入n,计算前n项式子的总和,然后输出本系列前n项的总和。

解:n=input("输入n:")

ans=0

for i in range(1,n+1):

      #pow(-1,i+1)用来控制分母的正负号,(2*i-1)用来控制分母的值

    ans=pow(-1,i+1)*4.0/(2*i-1)+ans

print ans

翻译:Fibonacci序列是一系列数字,其中每个连续数字是前两个的总和。 经典的Fibonacci序列开始:1,1,2,3,5,8,13 ......编写一个程序来计算第nFibonacci数,其中n是用户输入的值。 例如,如果n = 6,则结果为8。注意:Fibonacci数字增长非常快; 你的程序应该能够处理非常大的数字。

解:n=input("输入n:")

second=1

first=0

for i in range(n-1):

    #首先把第二个数取出来给index

    index=second

    #求第一个数和第二个数的和

    second=first+second

    #将原先的第二个数也就是index的值给现在的第一个

    first=index

print second

翻译:您已经看到数学库包含一个计算数字平方根的函数。在本练习中,您将编写自己的算法来计算平方根。解决此问题的一种方法是使用猜测和检查方法。您首先猜测平方根可能是什么,然后看看您的猜测有多接近。您可以使用此信息进行另一次猜测并继续猜测,直到找到平方根(或其近似值)。一种特别好的猜测方法是使用牛顿方法。假设x是我们想要平方根的数字,猜测是当前猜测的答案。使用XXXX作为下一个猜测可以改进猜测。编写一个实现牛顿方法的程序。程序应该提示用户输入值以找到(x)的平方根和改善猜测的次数。从猜测值x / 2开始,您的程序应该使用Newton方法循环指定的次数并报告guess的最终值。您也可以打印出math.sqrtx)的值进行比较。

(很有趣,确实很准。不过当输入的x非常大的时候,迭代的次数也就要求增大,否则会出现很大的误差)

解:x=input("请输入需要开平方根的数:")

n=input("请输入要迭代的次数:")

guess=x/2.0

for i in range(n):

    guess=(guess+x/guess)/2.0

print ("猜的值:%f"%guess)

print ("开方算的值:%f"%sqrt(x))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值