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

1.发明国际象棋的价值

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

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

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

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

#-*- coding:utf-8 -*-
import math

def calculateNum():
    numOfWheat = 0L
    for i in range(0,64):
        numOfWheat += math.pow(2, i)
    return numOfWheat

def calculateWeight():
    weightOfWheat = calculateNum() * 50 / 1000 /1000.0
    return weightOfWheat

def calculateDepth():
    area = int(raw_input('Please input a certain area:'))
    depthOfWheat = calculateNum() * 50 / 1000 / 1000.0/ 1000.0 / area
    return depthOfWheat

if __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 math

count = 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 turtle

num = 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 / num
turtle.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,接下来的操作如下:

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

将所有的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
        

    原文作者:shenpengjianke
    原文地址: https://blog.csdn.net/shenpengjianke/article/details/26079623
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞