Python入门经典——编程项目(一)

来源:互联网 发布:php 直播间 编辑:程序博客网 时间:2024/05/18 15:55

1.发明国际象棋的价值

关于国际象棋的发明者,有着一个广为流传的神话。当地统治者非常高兴,要给国际象棋的发明者大量的黄金作为奖励。发明者提出了另一种奖励方案,他希望得到棋盘上堆放的麦粒,但是需要按一下的方式来摆放:在棋盘的第一个正方形格子的四个角上,各放上一颗麦粒;第二个正方形格子的4个角上,各放上2颗麦粒;第3个格子的各个角上放8颗麦粒,以此类推,每次粮食的数量增加一倍。棋盘上共有64个方格。编一个程序计算一下内容:

(a)统治者要想发明者奖励麦粒的总数是多少?

(b)1颗麦粒重量约50毫克。小麦共重多少?

(c)选择一个地区,并确定将上述重量的小麦覆盖在该区域上,小麦的深度将是多少?假设1颗麦粒的体积为50立方毫米,提示输入区域的面积,然后输出的小麦的深度和所使用的单位。

#-*- coding:utf-8 -*-import mathdef calculateNum():    numOfWheat = 0L    for i in range(0,64):        numOfWheat += math.pow(2, i)    return numOfWheatdef calculateWeight():    weightOfWheat = calculateNum() * 50 / 1000 /1000.0    return weightOfWheatdef calculateDepth():    area = int(raw_input('Please input a certain area:'))    depthOfWheat = calculateNum() * 50 / 1000 / 1000.0/ 1000.0 / area    return depthOfWheatif __name__ == '__main__':    print 'Total number of wheat:', calculateNum()    print 'Total weight of wheat: %fg' % calculateWeight()    print 'Total depth of a certain area is: %fm' % calculateDepth()

2.折纸有多厚

从报纸中抽出一张,对折,再对折,继续对折,假设可以对折30次,请问厚度为多少?假设折的厚度是1/200厘米。编写程序来解决这个难题。提示输入折叠次数,输出厚度,以米为单位。

import mathcount = int(raw_input('Please input the count of the paper folding:'))depth = math.pow(2, count) * (1/200.0/100.0)print 'The depth is %fm' % depth

3.海龟绘图:多边形(polygon)

提示输入多边形的边数。利用正多边形的内角计算公式((边数 - 2) * 180°) /  边数)绘制多边形。可选项:提示输入1种颜色名称,用这种颜色填充多边形内部。

import turtlenum = int(raw_input('Please input the num of the polygon:'))color = raw_input('Please input the color of the fillcolor:')turtle.fillcolor(color)angel = 180 - (num - 2) * 180 / numturtle.begin_fill()for i in range(num):    turtle.forward(160)    turtle.right(angel)turtle.end_fill()turtle.done()

4.古怪的乘法

这项任务将实施所谓的“俄国农民“或”古埃及“乘法。它看起来有点古怪,但只是需要把它看成一个算法,和你在小学学习的乘法不同而已。                                                               

算法如下。如果A和B是要相乘的两个整数,重复地将A乘以2,而将B除以2,知道B不能再被整除为止。也就是说,直到值变成0(记住,做的是整数除法)为止。在每个步骤中,当B是奇数时,将A的对应值加到生成的乘积上;当B为偶数时,忽略对应的A值。下面是一个例子:

如果初始时,两个整数为34和19,接下来的操作如下:


将所有的A值和B值相加,得到最终乘积:34+68+544=644。

(a)第一部分:编程来计算两个整数的乘积

(b)第二部分:修改程序,计算完一个乘积后,询问是否还需要计算另一个乘积。

def inputAB():    A = int(raw_input('Please input A:'))    B = int(raw_input('Please input B:'))    return (A,B)    def multiplication():    mul = 0    A, B = inputAB()    while B != 0:        if B %2:            mul = mul + A        B = B / 2        A = A * 2    print mul        if __name__ == '__main__':    while True:        multiplication()        userInput = raw_input('Do you want to continue(Y or N)?:').upper()        if userInput == 'N':            break        


0 0
原创粉丝点击