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
- Python入门经典——编程项目(一)
- Python入门经典——编程项目(二)
- Python入门经典——编程项目(三)
- 《python编程入门经典》学习笔记第九章(一)
- python入门经典(一)
- Python——编程入门实例(一)
- 《python编程入门经典》学习笔记–第八章(一)
- 《Python编程入门经典》笔记
- python socket编程入门(一)
- Java\Scala\Python三种语言求解经典编程实例(一)——求水仙花数
- Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
- Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
- C#编程之经典算法——排序(一)
- C#编程之经典算法——查找(一)
- python入门经典(二)
- Linux 利器- Python 脚本编程入门(一)
- Linux平台下Python脚本编程入门(一)
- python 入门(一)
- 推荐文章汇总
- strcpy的三种实现方式 +strlen strcmp实现
- ROS探索总结(二)——ROS总体框架
- Ubuntu12.04 搭建TFTP服务
- CDOJ 解救小Q
- Python入门经典——编程项目(一)
- 新装的Ubuntu14.04网卡驱动问题
- select默认选择的实现方法
- ROS探索总结(三)——ROS新手教程
- 印迎最有争议新总理“印度教至上悲剧”仍留阴影
- 安卓实现BMP过滤某颜色显示或者透明显示的方法
- Java:switch语句所支持的数据类型
- CDOJ 方老师开橙卡
- 浏览器中的Flash 鼠标滚轮事件